Sample
int-a38b3256d810-I04
Replace method, parameter, and local names with deterministic ProGuard-style short identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.086 | 0–1; higher is more readable |
| Scalabrino | 0.89 | 0–1; higher is more readable |
| Dorn | 0.76 | 0–1; higher is more readable |
| Mi | 0.383 | 0–1; higher is more readable |
| LLOC | 15 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 9.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 11 | 0–20; mean of three runs |
| BTTF | 0.649 | 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. | 1115.802 | −36.821 |
| Source linesThe number of non-empty source lines. | 82 | +32.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.806 | −7.209 |
Intercept 8.87 + feature contributions = -2.361 (log-odds).
Score = sigmoid(-2.361) = 0.086.
| Score | 0.89 |
|---|
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. | 83 | −1.902 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 57 | +1.234 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 98.699 | +0.788 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 81.733 | +0.733 |
| 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.916 | −0.567 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.056 | +0.397 |
Intercept 0.07 + feature contributions = 1.15 (log-odds).
Score = sigmoid(1.15) = 0.76.
| Score | 0.383 |
|---|
| Score | 15 |
|---|
Run 1
This code is effectively unreadable due to deliberate obfuscation. Method names (a, b, c, d...) completely obscure intent, making it impossible to understand what each read operation does without external documentation or guessing from return types. The structure is flat and minimal, but the loss of semantic naming destroys readability. Comments attempt to clarify some intent (e.g., 'to skip a byte'), but they are awkward workarounds for what should be explicit method names like readByte() or readInt(). The class Javadoc is clear, but the interface body fails to convey purpose. Action granularity and nesting are fine, but clarity of intent is near zero. This reads like a code-golf exercise or a minified artifact, not production code.
Run 2
The code has a clear structure as an interface, with good documentation and consistent annotations. However, readability is significantly reduced by the non-descriptive method names (`a`, `b`, `c`, etc.) which obscure intent. This appears to be obfuscated or minimized code, not original source. The flat nesting and one-action-per-line structure are positives, and the comments explaining skip behavior are helpful. But the clarity of intent suffers because readers must infer each method's purpose from return types or surrounding comments rather than meaningful names. The code length is reasonable, and reading flow is logical, but the lack of descriptive identifiers is a major penalty. Overall, the structure and formatting are readable, but the naming choices drastically lower the score.
Run 3
The code has a clear overall structure as an interface with a descriptive Javadoc, but readability is severely hurt by obfuscated method names (a, b, c, d... n) that completely hide intent. The Javadoc explains the class purpose well, and the flat structure with no nesting is good. However, the action granularity and reading flow suffer because each method requires cross-referencing the original DataInput interface to understand what it does. The comments like '// to skip a byte' provide minimal intent but feel cryptic without the method names. Concise length is a plus, but the cost is clarity. The code would be far more readable with proper method names like readFully, skipBytes, readBoolean, readByte, readUnsignedByte, readShort, readUnsignedShort, readChar, readInt, readLong, readFloat, readDouble, readLine, and readUTF. As written, the code appears as a decompiled or obfuscated artifact rather than maintainable source code.
Run 1
Code Structure: Imports, interface documentation, and method declarations are logically organized. Nesting: The interface is flat, with no nested control flow. Clarity of intent: The overview explains the purpose well, but single-letter method and parameter names obscure individual operations. The renamed methods also conflict with the apparent intent of overriding DataInput methods, making the declarations misleading. Code length: Reasonably concise for an interface, though repeated annotations and comments add visual bulk. Action granularity: Each declaration occupies its own line, with annotations clearly separated. Reading flow: Consistent spacing and formatting support scanning, but readers must infer method meanings from return types, signatures, and skip-related comments rather than descriptive names.
Run 2
Code Structure: The interface is logically organized, with imports, documentation, annotations, and consistently separated declarations. Nesting: Flat, with no nested control flow. Clarity of intent: The class documentation clearly describes its purpose, but single-letter method and parameter names obscure individual operations. The renamed methods also make the @Override annotations inconsistent with DataInput, creating confusion. Code length: Appropriately concise for an interface; repeated annotations and comments add some visual bulk but convey useful information. Action granularity: Each declaration occupies its own line, with annotations clearly associated with methods. Reading flow: Formatting and spacing support scanning, but readers must infer method meanings from return types and comments rather than descriptive names. Overall, strong layout is undermined by severely ambiguous naming.
Run 3
Code Structure: The interface is logically organized, with imports, documentation, and consistently formatted declarations. Nesting: There is no nested control flow, making it easy to scan. Clarity of intent: Class documentation explains the overall purpose, but single-letter method and parameter names obscure individual operations. These names also conflict with the expected DataInput method names despite @Override annotations, making the intended contract confusing. Code length: Reasonably concise for an interface, though repeated annotations and comments add visual bulk. Action granularity: Each declaration occupies its own line, with no bundled operations. Reading flow: Spacing and annotation placement are consistent, but readers must infer method meanings from return types, ordering, and comments rather than descriptive names.