Sample
int-dc236b7e4e7d-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.677 | 0–1; higher is more readable |
| Dorn | 0.889 | 0–1; higher is more readable |
| Mi | 0.782 | 0–1; higher is more readable |
| LLOC | 53 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 6.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 11 | 0–20; mean of three runs |
| BTTF | 0.303 | 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. | 4667.764 | −154.036 |
| Source linesThe number of non-empty source lines. | 147 | +58.8 |
| 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.814 | −7.221 |
Intercept 8.87 + feature contributions = -93.587 (log-odds).
Score = sigmoid(-93.587) = 0.
| Score | 0.677 |
|---|
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. | 148 | −4.204 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 141 | +4.14 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 146.781 | +1.642 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 93.095 | +0.698 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| 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. | 94.953 | −0.357 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.128 | −0.301 |
Intercept 0.07 + feature contributions = 2.086 (log-odds).
Score = sigmoid(2.086) = 0.889.
| Score | 0.782 |
|---|
| Score | 53 |
|---|
Run 1
This code is heavily obfuscated, likely due to post-compilation renaming. Method names like a(), b(), c(), etc. are meaningless and completely obscure intent. The class structure is logical, but the loss of semantic method names destroys clarity. Nesting is minimal and line-level granularity is fine, but the code is effectively unreadable for evaluation purposes because the business logic and domain concepts are hidden behind meaningless single-letter identifiers. Even the parameter names (e, f, g, h) are ambiguous. Without meaningful names, the reader cannot infer the purpose of methods or their relationships. The code structure itself is not tangled, but the obfuscation makes it appear disorganized. In a real codebase this would be rated much higher with proper naming, but as presented it fails the clarity of intent criterion completely.
Run 2
The code is difficult to read because all method and variable names have been obfuscated (a(), b(), c(), etc.), which severely obscures intent despite the class-level Javadoc. Structure is logical (standard Guava collection implementation pattern), nesting is shallow, and most methods are concise, but the use of single-letter names destroys clarity of intent. Action granularity and reading flow are otherwise acceptable; lines are not overloaded, and methods follow a natural order. However, a reader must infer each method's purpose from return types and context rather than names. The private lazy-init getter pattern for comparator and elementSet is recognizable but still confusing with names like 'a' and 'b'. Without meaningful identifiers, maintainability and readability suffer significantly.
Run 3
The code has severe readability issues. Method names are reduced to single letters (a() through r()), completely obscuring intent. This violates core Java naming conventions and makes the code inscrutable without external documentation. Even with comments indicating original names, the obfuscation forces readers to maintain a mental mapping table. The structure itself follows a logical class hierarchy, and nesting is minimal, but these positives are negated by the naming collapse. Parameter names are similarly obfuscated (c, d, e, f, etc.). Multiple generic bounds and annotations create visual clutter. While the original Guava code was likely readable, this transformed version is extremely difficult to follow. One action per line is generally respected, and lazy initialization patterns are recognizable, but the complete loss of semantic naming drops readability to near-zero for practical purposes.
Run 1
Code Structure: Methods are logically separated, with delegation, lazy initialization, and entry-set implementation organized coherently. Nesting: Mostly flat, with simple conditionals and one local class introducing moderate nesting. Clarity of intent: The class documentation and descriptive library calls help, but single-letter method names, parameters, and locals severely obscure purpose. Documentation and internal calls reference descriptive methods absent from this snippet, further confusing interpretation. Code length: Generally concise, with short delegation methods and little unnecessary code. Action granularity: Most statements perform one action, though assignment within return statements and the lazy-initialization ternary combine operations. Reading flow: Consistent formatting and override annotations support scanning, but opaque names force repeated cross-referencing, and inconsistent wrapping slightly disrupts flow. Overall, the structural simplicity is undermined substantially by poor naming.
Run 2
Code Structure: Logically organized into short delegation methods, cached views, and a local entry-set implementation. Nesting: Mostly flat, with simple null checks and modest nesting in the local class. Clarity of intent: Severely weakened by single-letter method and parameter names; comments and calls also reference descriptive methods such as forwardMultiset() and entryIterator() that do not match the shown declarations. Code length: Concise overall, though numerous opaque wrappers require extra effort to interpret. Action granularity: Usually one action per line, but assignment within return statements and the cache ternary combine operations. Reading flow: Consistent formatting and annotations help, but reused single-letter identifiers and ambiguous method relationships repeatedly interrupt comprehension.
Run 3
Code Structure: Methods are logically separated, with a localized entry-set implementation and straightforward delegation. Nesting: Mostly flat; lazy initialization and the local class add only modest nesting. Clarity of intent: Severely weakened by single-letter method and parameter names, particularly for range bounds. Documentation references forwardMultiset() and entryIterator(), while corresponding declarations use a() and m(), creating inconsistency. Code length: Generally concise, with short methods and little unnecessary code. Action granularity: Most lines perform one action, although assignment within returns and a ternary combines caching with value selection. Reading flow: Consistent formatting and annotations help navigation, but repeated ambiguous identifiers and inconsistent naming force readers to infer behavior from delegated calls. Overall, the structural simplicity is undermined by poor naming.