Sample
int-37dafbc121bb-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.805 | 0–1; higher is more readable |
| Dorn | 0.689 | 0–1; higher is more readable |
| Mi | 0.61 | 0–1; higher is more readable |
| LLOC | 16 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14.67 | 0–20; mean of three runs |
| BTTF | 0.482 | 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. | 1376.306 | −45.418 |
| Source linesThe number of non-empty source lines. | 45 | +18 |
| 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.74 | −7.11 |
Intercept 8.87 + feature contributions = -25.658 (log-odds).
Score = sigmoid(-25.658) = 0.
| Score | 0.805 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 100 | +0.809 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 46 | −0.592 |
| 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. | 99.978 | −0.569 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 37 | +0.543 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 44.822 | +0.217 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.105 | −0.078 |
Intercept 0.07 + feature contributions = 0.796 (log-odds).
Score = sigmoid(0.796) = 0.689.
| Score | 0.61 |
|---|
| Score | 16 |
|---|
Run 1
The code has logical structure with appropriate package imports, clear class purpose, and Javadoc. However, method names (a, b) are completely opaque, obfuscating intent. The original parameter names are replaced with meaningless single letters (a, b, c, d, e), which severely hurts readability. Nesting is minimal (only one if-else chain), and action granularity is generally one action per line. Reading flow is broken by poor naming. Code length is reasonable but could be more concise elsewhere. Overall, the structure is sound but naming choices are poor, making the code difficult to understand without context. The one-letter names appear to be an artifact of obfuscation rather than intentional design.
Run 2
This code is severely unreadable due to obfuscated identifiers and unclear intent. The method names 'a' and 'b' are meaningless, obscuring their purpose, while parameter names like 'a', 'b', 'c', 'd', 'e' further compound confusion. The code structure is not inherently tangled, but the abbreviated names destroy clarity of intent, making even simple logic difficult to follow. Nesting is flat, which is good, but this minor positive is negated by the absence of descriptive variable names. Code length is concise, but this brevity harms readability instead of helping, as readers must infer semantics from generic names. Action granularity is mostly one action per line, yet each line remains cryptic due to poor naming. The reading flow is unnatural: a reader must constantly cross-reference types and context to guess what each variable represents. The Javadoc comments provide some context, but they do not compensate for the opaque identifiers. Overall, this code appears intentionally obfuscated, likely due to source transformation or experimental obfuscation, failing nearly all readability criteria despite straightforward logic.
Run 3
The code structure is generally logical, with a private constructor and two static utility methods. However, readability is significantly reduced by the use of single-letter method names ('a', 'b') and single-letter parameter/variable names ('a', 'b', 'c', 'd', 'e'), which obscure the intent. The nesting level is moderate (one if-else chain and one nested expression), but the type-checking logic could be clearer. The code is concise, but this conciseness comes at the expense of clarity. Reading flow is disrupted by the non-descriptive identifiers, despite the presence of a helpful comment explaining the SortedSet behavior. The method names and parameters fail to convey purpose, which forces the reader to analyze the implementation details carefully to understand what the code does.
Run 1
Code Structure: The utility class cleanly separates comparator matching from comparator extraction. Nesting: Shallow conditional branches and an early return keep complexity low. Clarity of intent: Javadoc and the natural-ordering comment explain the behavior, but single-letter method and variable names obscure meaning and make calls harder to follow. Code length: Concise, with no unnecessary logic; the split helper signature is slightly awkward. Action granularity: Each statement performs one clear action, and null checks are separate. Reading flow: Validation, collection-type detection, and comparator comparison follow a natural sequence, though ambiguous identifiers and tightly grouped package/import declarations reduce readability.
Run 2
Code Structure: The utility class is logically organized into two focused methods, with validation preceding comparison. Nesting: Shallow conditionals and an early return keep control flow simple. Clarity of intent: Documentation explains the purpose, but single-letter method and variable names obscure meaning; naming both a parameter and a method 'b' adds confusion. Code length: The implementation is concise without significant redundancy. Action granularity: Each statement performs one main action, making individual steps easy to follow. Reading flow: The sequence from validation to comparator extraction and equality checking is natural, although cryptic identifiers and an awkwardly wrapped method signature interrupt readability.
Run 3
Code Structure: The utility class is logically organized into two focused methods, with validation before processing. Nesting: Shallow conditional branches and an early return keep complexity low. Clarity of intent: Documentation explains the purpose and natural-order fallback, but single-letter method and variable names obscure meaning; the method b and parameter b are particularly confusing. Code length: The implementation is concise without unnecessary logic. Action granularity: Each statement performs one clear action, and null checks are separated. Reading flow: Execution proceeds naturally from validation to comparator selection and comparison, although cryptic identifiers and the split helper-method signature slightly interrupt readability.