Sample
int-f00668154498-I09
Select one of ten low-readability unrelated code templates per class
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.654 | 0–1; higher is more readable |
| Dorn | 0.441 | 0–1; higher is more readable |
| Mi | 0.112 | 0–1; higher is more readable |
| LLOC | 21 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 15.33 | 0–20; mean of three runs |
| BTTF | 0.167 | 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. | 2256.987 | −74.481 |
| Source linesThe number of non-empty source lines. | 90 | +36 |
| 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.893 | −7.339 |
Intercept 8.87 + feature contributions = -36.949 (log-odds).
Score = sigmoid(-36.949) = 0.
| Score | 0.654 |
|---|
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. | 91 | −2.186 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 62 | +1.407 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 62 | −1.002 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 89.871 | +0.846 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 98.813 | +0.79 |
| 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.967 | −0.569 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.055 | +0.406 |
Intercept 0.07 + feature contributions = -0.237 (log-odds).
Score = sigmoid(-0.237) = 0.441.
| Score | 0.112 |
|---|
| Score | 21 |
|---|
Run 1
The code has good structure overall: it uses standard class organization, clear method names, and Javadoc, which aid clarity of intent. However, there are significant issues. The presence of a nonsensical obfuscated boolean line like 'lI0O_d93c6c14=...' severely harms readability and is not standard practice. Nesting is acceptable and mostly flat. Code length is reasonable. Action granularity is mostly one action per line, except for the combined annotation and the single obfuscated line. Reading flow is disrupted by inconsistent indentation of annotations and the random code block with mismatched braces. The class's purpose is clear from its name and documentation, but the serialization methods are not formatted cleanly. These problems make the code harder to follow than it should be, despite the otherwise conventional structure.
Run 2
The code is generally well-structured for a Java class: imports are organized, method declarations are clear, and Javadoc is thorough. However, several flaws hurt readability. There is an odd, meaningless boolean line inside readObject (obfuscated-style dead code) that destroys natural reading flow and intent. The indentation of method annotations is inconsistent — the annotations for writeObject and readObject are indented same as method instead of aligned with method modifiers. There is also an unnatural blank line inside readObject, and a nested block with that boolean misleads about structure. While create() overloads and helper usage are concise, some lines cram multiple annotations onto one line at the bottom, reducing granularity. Overall it is moderately readable but hampered by unusual formatting and an obfuscated code fragment.
Run 3
The code is fundamentally readable with clear class-level Javadoc, logical structure, and simple static factory methods. However, significant issues lower the score: (1) The readObject method contains dead/obfuscated code (`boolean lI0O_d93c6c14=...`) that serves no purpose and severely damages clarity. (2) Indentation is inconsistent - annotations on readObject/writeObject are misaligned, and the readObject method body has an extra opening brace. (3) Long generic type declarations (`<E extends @Nullable Object>`) and repeated annotations create visual clutter. (4) The serialization methods are only minimally documented compared to the rest of the class. While the public API surface is clean, the implementation details show signs of code generation artifacts or unintended modifications that would confuse any reader. The mixed quality prevents a higher score despite the good structural foundation.
Run 1
Code Structure: Factory methods, constructors, and serialization helpers are logically organized, but an unrelated block disrupts readObject. Nesting: Mostly flat, with only one unnecessary nested block. Clarity of intent: Descriptive names and useful documentation clearly explain multiset behavior; the cryptically named boolean and redundant bitwise/negation expressions obscure intent. Code length: Core methods are concise, but the boolean block adds needless code. Action granularity: Most lines contain one action, while the injected block compresses multiple statements and the final declaration combines annotations and a field. Reading flow: The overall progression is natural, but inconsistent method indentation, cramped formatting, and the unexplained block interrupt an otherwise readable implementation.
Run 2
Code Structure: Factory methods, constructors, and serialization methods are logically grouped, but an unrelated obfuscated block disrupts readObject. Nesting: Mostly flat, with only one unnecessary nested block. Clarity of intent: Descriptive names and documentation explain multiset behavior well; the hexadecimal expression and cryptic boolean variable obscure intent. Code length: Implementation methods are concise, although the meaningless boolean manipulation adds unnecessary code. Action granularity: Most statements occupy separate lines, but the injected block combines declaration and reassignment, and the final field compresses annotations and declaration together. Reading flow: The overall progression is natural, but inconsistent method indentation, compressed formatting, and the anomalous block interrupt otherwise clean reading.
Run 3
Code Structure: Factory methods, constructors, and serialization methods are logically grouped. Nesting: Methods are mostly flat, with only one unnecessary nested block. Clarity of intent: Descriptive names and thorough documentation clearly explain multiset behavior, but the opaque boolean variable and redundant hexadecimal expression in readObject obscure intent. Code length: Implementation methods are concise; the meaningless boolean block adds unnecessary code. Action granularity: Most statements occupy separate lines, except the injected block, which compresses declaration and reassignment onto one line, and the final field declaration, which crowds annotations together. Reading flow: The overall sequence is natural and easy to follow, but inconsistent indentation around serialization methods and the unformatted boolean block interrupt it.