Sample
int-d8430d76a7d2-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.822 | 0–1; higher is more readable |
| Dorn | 0.747 | 0–1; higher is more readable |
| Mi | 0.195 | 0–1; higher is more readable |
| LLOC | 21 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 18.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs |
| BTTF | 0.661 | 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. | 1829.317 | −60.367 |
| Source linesThe number of non-empty source lines. | 115 | +46 |
| 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.834 | −7.251 |
Intercept 8.87 + feature contributions = -12.749 (log-odds).
Score = sigmoid(-12.749) = 0.
| Score | 0.822 |
|---|
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. | 109 | −2.823 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 72 | +1.753 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 114.55 | +1.191 |
| 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. | 109.94 | −0.991 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 109.966 | +0.97 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.044 | +0.515 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
Intercept 0.07 + feature contributions = 1.083 (log-odds).
Score = sigmoid(1.083) = 0.747.
| Score | 0.195 |
|---|
| Score | 21 |
|---|
Run 1
The code is highly readable, following clear structure and best practices. It uses a logical class organization with grouped fields, multiple well-documented constructors, and clearly named accessor methods. Nesting is minimal; the only conditional logic appears in short, flat helper methods. Each constructor and method has a distinct, single responsibility. Action granularity is excellent—each line performs one clear operation or assignment. Javadoc comments thoroughly explain intent, parameters, and edge cases, making the ambiguity low. The code length is appropriate for the class's purpose, with concise implementation and no redundancy. Reading flow is natural: class documentation, fields, constructors in order of increasing specificity, then getters. Null-safety annotations improve clarity. Minor deductions are only theoretical, such as the slight duplication between Class-based and String-based constructors, but overall this is exemplary readable production code.
Run 2
The code is highly readable due to its clear structure, consistent formatting, and well-documented constructors. It uses a flat class hierarchy with minimal nesting, and each constructor has a single, focused responsibility. Javadoc comments explain intent for each public API method. The use of pattern matching in getPersistentClass() and getPersistentClassName() improves clarity. Lines are kept concise, and the flow from constructors to getters is natural. Minor deductions include slight verbosity in repeated Javadoc and overloaded constructors, but overall readability is excellent.
Run 3
The code is highly readable. It follows a clear, logical structure with class-level documentation, fields, and well-organized constructors. Nesting is minimal, with only small conditional logic in getter methods. Each constructor and method has a clear, single purpose, and Javadoc comments explain intent effectively. The code is concise without being overly verbose; action granularity is appropriate, with one primary operation per line. Reading flow is natural, moving from construction to retrieval methods. Minor deductions stem from slight repetition in constructor overloads and the nullable type annotations creating minor visual noise, but overall clarity is excellent.
Run 1
Code Structure: Fields, constructors, and accessors are logically grouped, with consistent formatting and constructor delegation. Nesting: Almost entirely flat, with only one simple conditional. Clarity of intent: Descriptive names, Javadoc, and nullability annotations clearly communicate the exception's purpose; storing either a Class or String in an Object field slightly weakens type clarity. Code length: Implementation is concise, though repeated constructor documentation and duplicated default-message construction add some verbosity. Action granularity: Each assignment and return occupies its own line; multiline constructor calls remain easy to follow. Reading flow: The progression from state through initialization to accessors is natural, with minor friction from similar constructor overloads and long message expressions.
Run 2
Code Structure: Fields, constructors, and accessors are logically grouped, with constructor delegation reducing duplication. Nesting: Methods are flat, with only one shallow conditional. Clarity of intent: Descriptive names, Javadoc, and nullability annotations clearly explain the exception and its metadata; storing either a Class or String in an Object field slightly obscures the representation. Code length: Implementation is concise, though repeated constructor documentation and parallel overloads add some verbosity. Action granularity: Each statement performs a single clear action; multiline constructor calls remain understandable. Reading flow: Consistent formatting and predictable ordering support natural reading, with minor friction from long message expressions and repeated overloads.
Run 3
Code Structure: Fields, constructors, and accessors are logically grouped, with consistent formatting and documentation. Nesting: Almost entirely flat; the single conditional is shallow and straightforward. Clarity of intent: Descriptive names, Javadoc, and nullability annotations clearly communicate purpose, although storing either a Class or String in an Object field introduces slight ambiguity. Code length: Reasonably concise for the supported constructor variants, but repeated documentation and message construction add minor verbosity. Action granularity: Statements perform one clear action each; constructor delegation and ternary expressions remain readable. Reading flow: The progression from state to initialization to retrieval is natural, with only long constructor signatures and message expressions slightly interrupting the flow.