Sample
int-8b1dd118477a-I13
Lower every eligible classic and enhanced for loop to a while loop
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.629 | 0–1; higher is more readable |
| Dorn | 0.45 | 0–1; higher is more readable |
| Mi | 0.112 | 0–1; higher is more readable |
| LLOC | 19 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 18 | 0–20; mean of three runs |
| GPT-6.1 Sol | 18.33 | 0–20; mean of three runs |
| BTTF | 0.467 | 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. | 2055.329 | −67.826 |
| Source linesThe number of non-empty source lines. | 88 | +35.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.81 | −7.216 |
Intercept 8.87 + feature contributions = -30.972 (log-odds).
Score = sigmoid(-30.972) = 0.
| Score | 0.629 |
|---|
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. | 89 | −2.115 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 60 | +1.338 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 60 | −0.956 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 87.891 | +0.819 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 97.742 | +0.773 |
| 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.966 | −0.569 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.052 | +0.44 |
Intercept 0.07 + feature contributions = -0.2 (log-odds).
Score = sigmoid(-0.2) = 0.45.
| Score | 0.112 |
|---|
| Score | 19 |
|---|
Run 1
This code demonstrates excellent readability. The structure is logical, with clear separation of factory methods, constructors, and serialization logic. Javadoc documentation is thorough and helpful, particularly for public APIs. Nesting is minimal and flat. Intent is highly clear—each method has a descriptive name and purpose. Code length is appropriate; there's no unnecessary verbosity. Action granularity is good, with one operation per line in most cases. Reading flow is natural and follows a sensible order: class declaration, factory methods, constructors, then serialization. The only minor issues are the odd indentation on the @GwtIncompatible annotations for writeObject and readObject, and the slightly compressed format of the serialVersionUID declaration. These are cosmetic and don't significantly impact readability.
Run 2
The code is well-structured and highly readable. It follows clear class organization with static factory methods before constructors, consistent Javadoc, and logical grouping of fields. Nesting is minimal, with only small methods and no deep indentation. Intent is clear: each method's purpose is obvious from its name and documentation. The code is concise, avoiding unnecessary verbosity while maintaining clarity. Action granularity is good—each line performs one focused operation (e.g., creating a map, adding elements). Reading flow is natural: class-level documentation, factory methods in logical order, private constructors, then serialization. Minor deductions: the serialization method indentation is slightly inconsistent, and the `E extends @Nullable Object` type bound adds slight verbosity. Overall, this is exemplary Java library code that adheres to conventions and maintains excellent readability.
Run 3
The code is highly readable with a clear, logical structure. The class is well-organized: static factory methods first, private constructors, then serialization logic. Javadoc is thorough and explains both the class's behavior and the rationale behind factory parameters. Nesting is minimal and flat, with no complex control flow. Intent is immediately clear—each factory method and constructor is concise and named descriptively. Line length is appropriate, and each statement occupies its own line, with braces consistently placed. Readability is slightly reduced by the unusual indentation of the @GwtIncompatible and @J2ktIncompatible annotations on the private serialization methods, and the import grouping is slightly compressed, but these are minor style issues. Overall, the code follows clean, predictable conventions, making it easy to scan and understand.
Run 1
Code Structure: Logically organized into documented factory methods, private constructors, and serialization helpers. Nesting: Very flat, with no nested control flow. Clarity of intent: Descriptive names and thorough Javadoc clearly explain construction and iteration behavior; inherited implementation details require some external context. Code length: Concise implementation with useful documentation rather than unnecessary logic. Action granularity: Each statement performs one clear action, though the final field declaration combines annotations and declaration on one line. Reading flow: Consistent method grouping and straightforward statements make the code easy to follow. Minor indentation inconsistencies in the serialization method declarations and compressed annotations on serialVersionUID slightly reduce visual consistency.
Run 2
Code Structure: Factory methods, constructors, and serialization hooks are logically grouped. Nesting: Methods are flat, with no nested control flow. Clarity of intent: Descriptive names and thorough Javadoc explain iteration behavior, creation options, and serialization; inherited helpers require some external context. Code length: The implementation is concise, and documentation adds useful context rather than unnecessary complexity. Action granularity: Executable statements generally perform one action per line, although the final field declaration compresses annotations and modifiers together. Reading flow: The progression from public creation methods to private implementation details is natural. Minor formatting issues, particularly inconsistent indentation of serialization method declarations and missing spacing after the package declaration, slightly reduce readability.
Run 3
Code Structure: Factory methods, constructors, and serialization hooks are logically grouped with clear responsibilities. Nesting: Methods are flat, with no nested control flow. Clarity of intent: Descriptive names and useful Javadoc explain creation options and iteration-order guarantees; inherited behavior and serialization helpers require some external context. Code length: The implementation is concise, and documentation adds useful context rather than unnecessary verbosity. Action granularity: Executable statements generally perform one action per line, although the final declaration crowds annotations and the field onto one line. Reading flow: Consistent method ordering and short bodies make the code easy to follow. Minor formatting issues, particularly extra indentation on serialization method declarations and missing spacing after the package declaration, slightly reduce polish.