Sample
int-291dd89e6553-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.655 | 0–1; higher is more readable |
| Dorn | 0.761 | 0–1; higher is more readable |
| Mi | 0.636 | 0–1; higher is more readable |
| LLOC | 14 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14 | 0–20; mean of three runs |
| BTTF | 0.633 | 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. | 1440.724 | −47.544 |
| Source linesThe number of non-empty source lines. | 49 | +19.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.751 | −7.126 |
Intercept 8.87 + feature contributions = -26.2 (log-odds).
Score = sigmoid(-26.2) = 0.
| Score | 0.655 |
|---|
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. | 50 | −0.734 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 91.9 | +0.678 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 39 | +0.612 |
| 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. | 48.806 | +0.272 |
| 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. | 91.94 | −0.229 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.087 | +0.092 |
Intercept 0.07 + feature contributions = 1.16 (log-odds).
Score = sigmoid(1.16) = 0.761.
| Score | 0.636 |
|---|
| Score | 14 |
|---|
Run 1
The code is poorly structured and confusing. Method names (a, b, c, d) and parameter name (a, b) are completely meaningless, obscuring the adapter's purpose. The single override (d) has nested calls and conditionals, reducing clarity. While the class-level Javadoc explains intent, the implementation breaks readability. The code is concise but at the expense of clarity. The import of convertToHeaderFormat is used correctly, but the overall flow is disjointed. Multiple logical actions are compressed into a single line (return KeyValue.pair(...)), violating action granularity. Nesting is minimal but method naming and lack of meaningful identifiers ruin natural reading flow.
Run 2
The code is heavily obfuscated despite its clear Javadoc. Method names like a(), b(), c(), and d() completely obscure intent, violating the 'clarity of intent' criterion. The parameter named 'a' and local variable 'b' also hide meaning. The adapter pattern structure is logical, but the obfuscated names negate any structural clarity. Nesting is minimal and reading flow is disrupted only by meaningless identifiers. Code length is reasonable and action granularity is acceptable, but the core purpose of each method requires guesswork. The class would be readable if method names were close(), peekNextKey(), hasNext(), and next() respectively. As written, it ranks very poorly for maintainability despite the clean structure.
Run 3
The code structure is mostly clear with a single adapter class and a simple delegate pattern. However, it loses points for several issues: method names like 'a()', 'b()', 'c()', 'd()' are completely meaningless and obscure intent; the parameter name 'a' in the constructor is also poor; variable 'b' in method 'd()' conflicts with method 'b()' creating confusion. Nesting is flat and flow is natural, but the obfuscated names significantly harm clarity. The code is concise and has one action per line, which is positive. The Javadoc is helpful for understanding the purpose. Overall, the logic would be readable if properly named, but currently requires mental mapping between meaningless names and their actual functions.
Run 1
Code Structure: The adapter is logically organized, with one wrapped iterator and small delegation methods. Nesting: Only a single conditional appears, making control flow easy to follow. Clarity of intent: The class name and documentation explain the compatibility purpose, but method names a(), b(), c(), and d(), along with variables a and b, obscure their roles and do not match the expected iterator interface methods. Code length: The implementation is concise without unnecessary logic. Action granularity: Each statement performs one clear action. Reading flow: Constructor, delegation methods, and value conversion form a natural sequence, although cryptic naming and tightly grouped imports reduce readability.
Run 2
Code Structure: A small, logically organized adapter with a single responsibility and straightforward delegation. Nesting: Minimal; only one simple null check. Clarity of intent: Class documentation and innerIterator explain the overall purpose, but method names a(), b(), c(), and d(), plus variables a and b, obscure individual operations. These method names also do not match the expected KeyValueIterator methods despite @Override annotations, creating confusion about correctness. Code length: Concise, without unnecessary implementation detail. Action granularity: Each statement performs one clear action. Reading flow: Delegation followed by conversion is easy to follow, though cryptic naming and tightly grouped imports reduce readability.
Run 3
Code Structure: A small, logically organized adapter with a single responsibility and straightforward delegation. Nesting: Minimal; only one shallow null check. Clarity of intent: Class documentation and innerIterator explain the overall purpose, but method names a, b, c, and d and variable names a and b obscure individual operations. These method names also do not match the expected KeyValueIterator interface methods, making the overrides confusing. Code length: Concise without unnecessary logic. Action granularity: Each statement performs one clear action. Reading flow: Delegation followed by value conversion is natural, although cryptic naming and tightly packed imports reduce readability.