Sample
int-9e6ea973ab7c-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.844 | 0–1; higher is more readable |
| Dorn | 0.453 | 0–1; higher is more readable |
| Mi | 0.781 | 0–1; higher is more readable |
| LLOC | 15 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8 | 0–20; mean of three runs |
| GPT-6.1 Sol | 12 | 0–20; mean of three runs |
| BTTF | 0.449 | 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. | 1540.787 | −50.846 |
| Source linesThe number of non-empty source lines. | 53 | +21.2 |
| 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.927 | −7.39 |
Intercept 8.87 + feature contributions = -28.166 (log-odds).
Score = sigmoid(-28.166) = 0.
| Score | 0.844 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 48 | +0.923 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 54 | −0.876 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 95.111 | +0.73 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 48 | −0.681 |
| 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. | 96.87 | −0.438 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 52.827 | +0.329 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.122 | −0.247 |
Intercept 0.07 + feature contributions = -0.19 (log-odds).
Score = sigmoid(-0.19) = 0.453.
| Score | 0.781 |
|---|
| Score | 15 |
|---|
Run 1
The code is heavily obfuscated with meaningless single-letter method names (a, b, c, d, e, f) that replace standard methods like getKey, getValue, setValue, equals, hashCode, and toString. This destroys clarity of intent and reading flow. The structure is logical but hidden behind cryptic names. Nesting is shallow, code length is concise, and action granularity is reasonable, but these positives are negated by the opaque naming. The generic wildcard cast and null checks are standard but the names make even simple logic hard to follow. Overall, the code requires constant mental mapping from single letters to methods, making it unreadable despite clean formatting.
Run 2
The code structure is mostly logical with clear method separation, but the intentional obfuscation of method names (a(), b(), c(), d(), e(), f()) severely hurts readability. The original entry methods like getKey(), getValue(), setValue(), equals(), hashCode(), and toString() have been replaced with meaningless single-letter names, making the code ambiguous and hard to follow. Nesting is shallow, which is good, and the logic is concise with one action per line. The reading flow is natural in terms of order, but the abstract method names break the mental mapping to standard Map.Entry semantics. The Javadoc comment explains the purpose, but it cannot compensate for the lost method name clarity. The code would be much more readable if the standard method names were preserved.
Run 3
The code structure is logical but heavily obfuscated. Method names like a(), b(), c(), d(), e(), and f() give no indication of their purpose, making the intent completely unclear. While nesting is minimal and reading flow is reasonable, the code requires external knowledge to understand what methods do. The equals/hashCode/toString implementations are concise and follow good practices, but the single-letter naming destroys clarity. Action granularity is generally good, but the ternary operations could be clearer. The code appears to be deliberately obfuscated, perhaps as a test or demonstration, but in its current form it would be unmaintainable. Real code should use descriptive names like getKey(), getValue(), setValue(), equals(), hashCode(), and toString(). Without the class-level documentation, this code would be nearly impossible to decipher.
Run 1
Code Structure: Methods are logically separated, with consistent formatting and annotations. Nesting: Only one shallow conditional; control flow is easy to follow. Clarity of intent: Single-letter method and variable names obscure their roles. The documentation suggests standard Entry operations, but the renamed methods do not match Entry or Object methods despite @Override annotations, creating confusion. Code length: Compact, without unnecessary repetition. Action granularity: Statements generally perform one action per line; compound equality and hash calculations remain manageable. Reading flow: The apparent accessor, mutation, equality, hash, and string-method sequence is natural, but readers must repeatedly infer meanings from implementation rather than names.
Run 2
Code Structure: Logically organized into short methods with consistent formatting and annotations. Nesting: Minimal; only one conditional block. Clarity of intent: Severely weakened by single-letter method and variable names, which obscure key/value access and equality, hashing, and string conversion. The documentation helps, but the renamed methods do not match the Entry interface or the documented Object overrides, making the @Override annotations misleading and the code invalid as shown. Code length: Concise without unnecessary repetition. Action granularity: Generally one action per line; the combined hash expression is compact but readable. Reading flow: Method ordering is natural, but readers must repeatedly infer what a(), b(), and other identifiers represent.
Run 3
Code Structure: Logically organized into small methods within a single abstraction. Nesting: Very shallow, with only one conditional block. Clarity of intent: Severely weakened by single-letter method and variable names; readers must infer key/value access, equality, hashing, and string conversion from implementations. The @Override annotations conflict with these renamed methods under the standard Entry interface, further confusing intent. Code length: Concise, without unnecessary implementation detail. Action granularity: Generally one declaration, return, or throw per statement; compound expressions remain manageable. Reading flow: Method ordering and documentation provide a natural progression, but ambiguous identifiers repeatedly interrupt comprehension.