Sample
int-78b62cff08bd-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.64 | 0–1; higher is more readable |
| Dorn | 0.572 | 0–1; higher is more readable |
| Mi | 0.046 | 0–1; higher is more readable |
| LLOC | 29 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 16.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs |
| BTTF | 0.473 | 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. | 2824.481 | −93.208 |
| Source linesThe number of non-empty source lines. | 86 | +34.4 |
| 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.873 | −7.309 |
Intercept 8.87 + feature contributions = -57.247 (log-odds).
Score = sigmoid(-57.247) = 0.
| Score | 0.64 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| 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. | 150.931 | −2.728 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 87 | −2.044 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 75 | +1.857 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 150.977 | +1.631 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 85.862 | +0.79 |
| 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.065 | +0.313 |
Intercept 0.07 + feature contributions = 0.288 (log-odds).
Score = sigmoid(0.288) = 0.572.
| Score | 0.046 |
|---|
| Score | 29 |
|---|
Run 1
The code is generally readable and well-organized. The class has a clear single purpose, with a logical static initializer for default overrides and a focused constructor. The `properties` method follows a clear precedence chain (defaults -> global -> per-topic) and includes an explanatory comment. Nesting is minimal, with only one level in the `equals` method and a try-catch. Naming is descriptive, and action granularity is good — most lines perform one logical step. However, the long static initializer in the class body slightly interrupts reading flow, and the `retentionMs` property lacks an explanatory comment at its declaration, which would clarify its role. The equals/hashCode/toString methods are standard but verbose, adding length without adding much readability benefit. Overall, the code is maintainable and straightforward for a Kafka internals developer.
Run 2
The code is well-structured, with clear separation of concerns and consistent formatting. Class purpose is documented, static initialization is clean, and the implementation follows a logical flow. Nesting is minimal, with only one level inside the properties() method. Variable names are descriptive, and the equals/hashCode/toString implementations are standard and readable. The comment about configuration override precedence is helpful. Minor deductions: multiple map operations on adjacent lines could be slightly more separated, and the `properties()` method performs both map merging and conditional retention logic, making it moderately dense. Overall, the code is highly readable with minimal ambiguity.
Run 3
The code is generally well-structured and readable. The class has a clear single responsibility, and methods are concise with flat control flow. The static initializer for default overrides is logically separated, and the properties() method is straightforward: it builds a configuration map in three clear steps with a helpful comment explaining precedence. Nesting is minimal, and actions are granular—one major operation per line. The only improvement would be slightly better inline documentation around the override rule and the treatment of retentionMs defaulting, but the existing code remains easy to follow and maintain.
Run 1
Code Structure: Well organized into default initialization, construction, configuration generation, and standard object methods. Nesting: Shallow overall; only the retention condition contains a nested try/catch. Clarity of intent: Descriptive names, Javadoc, and an explicit configuration-precedence comment make the purpose clear, though the overflow fallback could use a brief explanation. Code length: Appropriately concise, with some unavoidable boilerplate in equals, hashCode, and toString. Action granularity: Each statement performs a distinct operation, making configuration assembly easy to follow. Reading flow: Defaults, overrides, retention adjustment, and return follow a natural sequence. Minor readability issues include long declarations and expressions, slightly awkward comment wording, and reliance on inherited fields whose definitions are not visible.
Run 2
Code Structure: Well organized into default initialization, construction, property resolution, and standard object methods. Nesting: Shallow overall; the conditional containing try/catch is manageable. Clarity of intent: Descriptive identifiers and documentation explain configuration precedence and retention adjustment, although inherited fields require superclass context and the overflow fallback could use a brief explanation. Code length: Appropriately concise, with conventional equals, hashCode, and toString boilerplate. Action granularity: Each statement performs one clear operation; configuration merging is easy to follow. Reading flow: Methods progress naturally, and early returns simplify equals. Minor readability drawbacks include long declarations and configuration expressions, inconsistent spacing between imports and package declaration, and slightly awkward comment wording.
Run 3
Code Structure: Well-organized class with defaults, constructor, configuration logic, and standard object methods clearly separated. Nesting: Shallow overall; the nested try/catch inside the retention condition remains easy to follow. Clarity of intent: Descriptive names and documentation explain configuration precedence and retention calculation, though the exception variable 'swallow' is less informative and overflow handling could use a brief comment. Code length: Appropriately concise, with some conventional boilerplate and long declarations. Action granularity: Statements generally perform one action per line; chained equality checks and string concatenation are formatted clearly. Reading flow: Initialization leads naturally into behavior and utility methods. Minor drawbacks include tightly packed imports, long lines, and unnecessary Objects.equals usage for primitive retentionMs.