Sample
int-898fad24dd95-I04
Replace method, parameter, and local names with deterministic ProGuard-style short identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.997 | 0–1; higher is more readable |
| Scalabrino | 0.814 | 0–1; higher is more readable |
| Dorn | 0.66 | 0–1; higher is more readable |
| Mi | 0.235 | 0–1; higher is more readable |
| LLOC | 5 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 13 | 0–20; mean of three runs |
| BTTF | 0.261 | 0–1; higher is more readable |
Views
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Source linesThe number of non-empty source lines. | 80 | +32 |
| Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones. | 845.105 | −27.888 |
| 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.834 | −7.251 |
Intercept 8.87 + feature contributions = 5.73 (log-odds).
Score = sigmoid(5.73) = 0.997.
| Score | 0.814 |
|---|
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. | 79 | −1.761 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 93.827 | +0.709 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 79.812 | +0.706 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.028 | +0.67 |
| 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.988 | −0.57 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 34 | +0.439 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
Intercept 0.07 + feature contributions = 0.662 (log-odds).
Score = sigmoid(0.662) = 0.66.
| Score | 0.235 |
|---|
| Score | 5 |
|---|
Run 1
The code is heavily obfuscated, making it unreadable despite otherwise clear structure and formatting. While the class-level Javadoc is detailed and helpful, all method names (`a`, `b`, `c`, `d`, `e`) and parameter names (`a`, `b`, `c`, `d`, `e`) are meaningless single letters. This destroys clarity of intent and reading flow. The structure and nesting are flat, and action granularity is fine, but the semantic content is absent. The Javadoc refers to methods like `get`, `removeAll`, `replaceValues`, `asMap`, and `equals`, but these are not the actual identifiers used. This appears to be intentionally obfuscated source code, which makes it unsuitable for maintenance or understanding. The code length and formatting follow standard Java conventions, but the lack of descriptive naming is a fatal readability flaw.
Run 2
The code has clear structure with proper imports, Javadoc, and interface declaration, but method names are obfuscated (a, b, c, d, e) and parameter names are single letters, severely hurting clarity of intent. Though the structure is logical and nesting is flat, the reading flow is disrupted by ambiguous naming. Javadoc comments are thorough but reference methods that don't match their actual names, creating confusion. Action granularity is fine, and code length is appropriate for an interface. The obfuscation appears intentional but makes the code unreadable in practice.
Run 3
The code has severe readability problems due to obfuscation. While the structure is relatively flat and follows a logical interface pattern, the method names (a, b, c, d, e) and parameter names (a, b, c, d, e) are meaningless and make it impossible to understand intent without reading the documentation. This turns reading into a puzzle rather than clear comprehension. The Javadoc provides good context but cannot compensate for deliberately unhelpful identifiers. Formatting is consistent, but the naming destroys clarity of intent and reading flow. Multiple annotations and generics add some noise, though they are necessary. Overall, the code's structural organization is acceptable, but the opaque naming renders it effectively unreadable to any developer unfamiliar with the original source.
Run 1
Code Structure: The interface is logically organized, with consistent annotations and documentation preceding each declaration. Nesting: Flat method declarations and no control-flow nesting make scanning easy. Clarity of intent: The interface description and generic types explain the overall purpose, but single-letter method and parameter names obscure individual operations. Documentation references descriptive method names that do not match the declarations, further weakening clarity. Code length: Declarations are concise, though repeated documentation adds unnecessary length. Action granularity: Each declaration occupies its own line, with annotations clearly separated; there are no combined actions. Reading flow: Consistent formatting supports a natural top-to-bottom flow, but repetitive comments and the mismatch between documented names and actual identifiers interrupt comprehension.
Run 2
1. Code Structure: Well-organized interface with consistent annotations and documentation preceding each declaration. 2. Nesting: Flat structure with no nested control flow, making it easy to scan. 3. Clarity of intent: Descriptive interface documentation and explicit types help, but single-letter method and parameter names obscure operations. Documentation references descriptive methods that do not match the declarations, further reducing clarity. 4. Code length: Declarations are concise, but repeated documentation makes the interface unnecessarily lengthy. 5. Action granularity: Each method declaration occupies its own line, with annotations clearly separated; no statements combine multiple actions. 6. Reading flow: Consistent formatting provides a natural top-to-bottom flow, although repetitive comments and ambiguous names interrupt understanding.
Run 3
Code Structure: The interface is logically organized, with consistent imports, annotations, and documentation preceding each declaration. Nesting: Minimal nesting makes it easy to scan. Clarity of intent: The interface-level documentation clearly explains list-valued multimap behavior, but single-letter method and parameter names obscure individual operations. References to get, removeAll, replaceValues, and asMap do not match the declared names, creating confusion; the equality method is similarly renamed. Code length: Declarations are concise, but repeated documentation adds unnecessary length. Action granularity: Each declaration occupies its own line, with annotations clearly separated; there are no compound executable statements. Reading flow: Consistent formatting and documentation provide a natural top-to-bottom flow, although ambiguous naming and mismatched documentation interrupt comprehension.