Sample
int-0206e624b379-I04
Replace method, parameter, and local names with deterministic ProGuard-style short identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.959 | 0–1; higher is more readable |
| Dorn | 0.643 | 0–1; higher is more readable |
| Mi | 0.714 | 0–1; higher is more readable |
| LLOC | 28 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 3.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 11.33 | 0–20; mean of three runs |
| BTTF | 0.462 | 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. | 2067.64 | −68.232 |
| 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.371 | −6.557 |
Intercept 8.87 + feature contributions = -20.319 (log-odds).
Score = sigmoid(-20.319) = 0.
| Score | 0.959 |
|---|
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.91 | +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.046 | +0.498 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
Intercept 0.07 + feature contributions = 0.589 (log-odds).
Score = sigmoid(0.589) = 0.643.
| Score | 0.714 |
|---|
| Score | 28 |
|---|
Run 1
The code has critical readability issues. The method names a(), b(), c(), d(), e(), f(), and g() are completely opaque and provide no indication of their purpose, forcing readers to rely solely on Javadoc. Parameter names like (Object b, Supplier<Boolean> c, long d) are meaningless single letters that obscure the logic. The wait_for_future method is deeply nested with a while loop, try-catch, and a conditional throw of a variable to preserve the original timeout exception, making the control flow hard to follow. While the code structure itself is logically organized and the Javadoc is thorough, the obfuscated naming destroys clarity of intent. The mixed use of method overloads with different parameter types (long vs Duration) combined with single-letter names makes it nearly impossible to understand calls without reading documentation. Action granularity is reasonable, and the code is concise, but the lack of expressive naming makes this effectively unreadable for a human without constant reference to the comments.
Run 2
The code is severely unreadable due to meaningless method and variable names (a(), b(), c(), d(), e(), f(), g(), plus single-letter parameters) that completely obscure intent. While the structure is logically organized and nesting is mostly shallow, the lack of descriptive names forces readers to rely solely on comments to understand behavior. Method overloading (two f() methods) and the obfuscated generic wait method g() further complicate comprehension. Action granularity is acceptable, but reading flow is disrupted by cryptic identifiers and inconsistent formatting. Overall, the code would be reasonably structured if properly named, but as written it largely fails as readable code.
Run 3
The code is almost completely unreadable due to deliberate renaming of all methods, parameters, and local variables to single-letter names (a, b, c, d, e, f, g, h, i, j, k, l, m). This destroys clarity of intent, makes the reading flow nonsensical, and breaks all semantic meaning. While the original structure is likely well-organized, the obfuscated names make it impossible to understand what the code does without reverse-engineering every single identifier. The comments and method signatures are also mismatched—e.g., method `e` takes parameter `b` (an object) and `c` (a supplier), but the parameter names no longer reflect their purpose. The code structure and nesting may be acceptable, but they cannot compensate for the complete loss of meaning. Action granularity and code length are irrelevant when every name is meaningless. This is effectively unmaintainable.
Run 1
Code Structure: The interface logically groups clock access, waiting, and timer creation into small methods. Nesting: Mostly shallow, though the synchronized wait loop and future retry loop introduce moderate nesting. Clarity of intent: Documentation explains the purpose, but single-letter method and variable names obscure behavior and time units. Several documentation references and parameter names do not match the actual identifiers, further weakening clarity. Code length: Implementations are concise; the extensive documentation is mostly useful rather than redundant. Action granularity: Each statement generally performs one action, with no crowded multi-statement lines. Reading flow: Method ordering and whitespace are sensible, but readers must repeatedly consult comments to decode identifiers. Inconsistent brace usage and the unusually split future-method signature slightly disrupt flow. Overall, solid organization is undermined primarily by opaque naming.
Run 2
Code Structure: The interface logically groups clock access, sleeping, timers, and waiting operations into separate methods. Nesting: Most methods are flat, but the synchronized waiting loop and future retry loop introduce moderate nesting. Clarity of intent: Documentation explains the functionality, but single-letter method and variable names obscure meaning and require constant cross-referencing. Several Javadoc parameter names do not match the actual parameters, and documentation references a nonexistent nanoseconds method. Code length: Implementations are concise; extensive documentation is mostly useful but cannot compensate fully for ambiguous naming. Action granularity: Statements generally perform one action per line, with no densely packed operations. Reading flow: Method ordering and early exits support natural flow, but cryptic identifiers, inconsistent formatting, and omitted braces on some conditional branches interrupt comprehension.
Run 3
Code Structure: The interface logically groups clock, sleep, timer, and waiting operations into small methods. Nesting: Most methods are flat; the synchronized condition loop and future-wait loop introduce moderate, manageable nesting. Clarity of intent: Documentation explains the operations, but single-letter method and variable names severely obscure meaning. Several documentation references and parameter names do not match the actual declarations, further reducing clarity. Code length: Implementations are concise, although extensive documentation dominates the file. Action granularity: Statements generally perform one action per line, making individual steps easy to distinguish. Reading flow: Method ordering is coherent, but readers must repeatedly consult comments to interpret identifiers and track deadlines, timestamps, and exceptions. Overall, sound organization and concise implementations are substantially undermined by uninformative naming.