Sample
int-aef5b2103643-SRC
Unmodified source class
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.918 | 0–1; higher is more readable |
| Dorn | 0.651 | 0–1; higher is more readable |
| Mi | 0.726 | 0–1; higher is more readable |
| LLOC | 28 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 17.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs |
| BTTF | 0.599 | 0–1; higher is more readable |
Views
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones. | 2107.815 | −69.558 |
| Source linesThe number of non-empty source lines. | 114 | +45.6 |
| Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value. | 4.421 | −6.631 |
Intercept 8.87 + feature contributions = -21.719 (log-odds).
Score = sigmoid(-21.719) = 0.
| Score | 0.918 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 115 | −3.035 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 73 | +1.788 |
| Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names. | 120.991 | −1.46 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 113.861 | +1.182 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 120.991 | +1.148 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.042 | +0.535 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
Intercept 0.07 + feature contributions = 0.625 (log-odds).
Score = sigmoid(0.625) = 0.651.
| Score | 0.726 |
|---|
| Score | 28 |
|---|
Run 1
The code is well-structured and clearly organized. Each method has a single responsibility and is documented with Javadoc, which makes the intent explicit. The nesting level is moderate—only two levels deep for the wait loops—which is acceptable and easily readable. Action granularity is strong: most lines contain a single logical operation. The waitObject and waitForFuture methods use clear control flow, with early returns and straightforward condition checks. The only minor readability concerns are the slightly long Javadoc for nanoseconds() and some line wrapping in waitForFuture, which slightly interrupt the natural reading flow. Overall, the code is concise, maintainable, and easy to follow.
Run 2
The code is well-structured with clear separation of concerns and good documentation. The interface methods are logically organized and Javadoc comments explain intent clearly. Nesting is minimal: the deepest nesting is two levels in waitObject and waitForFuture, which is acceptable. Action granularity is generally good, with one operation per line in most cases. The waitForFuture method has slightly more complex logic with a try-catch inside a while loop that could be clearer, but it remains readable. The method signature formatting is a bit unusual with the multi-line parameter list and throws clause, but this appears to be a style convention rather than a problem. Overall, the code is concise, well-documented, and easy to follow.
Run 3
The code is highly readable due to its clean interface design, clear method names, and comprehensive Javadoc. Structure is logical, with methods grouped by functionality and minimal nesting (only two levels in waitObject and waitForFuture). Intent is well-documented; each method's purpose and parameters are clear. The code is concise - no unnecessary lines - and action granularity is appropriate, with one logical operation per line. Reading flow follows a natural progression: basic time methods, sleep, wait utilities, timers, then future handling. Minor deductions: waitForFuture's multi-line method signature is slightly awkward, and the timeout exception reassignment pattern could be more elegant. Overall excellent clarity for a utility interface.
Run 1
Code Structure: The interface logically groups clock operations, waiting utilities, and timer factories into focused methods. Nesting: Most methods are flat; waitObject has moderate synchronized/loop/conditional nesting, while waitForFuture remains manageable. Clarity of intent: Descriptive names, explicit time-unit suffixes, and useful documentation clearly explain wall-clock versus monotonic time. Retaining the last timeout exception is slightly less obvious without a comment. Code length: Implementations are concise, and longer documentation provides relevant context rather than unnecessary repetition. Action granularity: Statements generally perform one action per line, with no compressed multi-statement lines. Reading flow: Consistent method boundaries and straightforward control flow make reading natural. Minor distractions include inconsistent braces around conditionals, unusual multiline parameter formatting, and a fully qualified timeout exception needed to distinguish two exception types.
Run 2
Code Structure: The interface logically groups clock access, waiting, and timer creation into focused methods. Nesting: Most methods are flat; waitObject has moderate nesting through synchronization, a loop, and conditionals, but early exits keep it manageable. Clarity of intent: Descriptive names, explicit time-unit suffixes, and useful documentation make behavior clear. The retained timeout exception in waitForFuture could benefit from a brief explanatory comment. Code length: Implementations are concise; extensive documentation is mostly justified by timing semantics. Action granularity: Statements generally perform one action per line, although the conditional throw expression adds slight complexity. Reading flow: Consistent method organization and whitespace support natural reading. Minor distractions include inconsistent conditional braces, the split waitForFuture signature, and the fully qualified timeout exception needed to distinguish exception types.
Run 3
Code Structure: The interface logically groups clock access, sleeping, timers, and waiting utilities into focused methods. Nesting: Most methods are flat; waitObject introduces moderate nesting through synchronization, a loop, and conditionals, while early returns limit complexity. Clarity of intent: Descriptive method names, explicit time units, and detailed documentation clearly distinguish wall-clock and monotonic time. The timeout retry behavior in waitForFuture could benefit from a brief explanatory comment. Code length: Implementations are concise; documentation is extensive but useful, with minor repetition in timer overloads. Action granularity: Statements generally perform one action per line, although the conditional exception expression is slightly dense. Reading flow: Organization and formatting are mostly natural and consistent. Missing braces around some conditionals, the fully qualified timeout exception, and the unusually split waitForFuture signature create minor reading friction.