Sample
JetBrains/i11
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.017 | 0–1; higher is more readable | 92.4Δ 50.0 |
| Scalabrino | 0.845 | 0–1; higher is more readable | 82.2Δ 39.8 |
| Dorn | 0.783 | 0–1; higher is more readable | 96.6Δ 54.2 |
| Mi | 0.603 | 0–1; higher is more readable | 73.7Δ 31.4 |
| LLOC | 10 | Logical lines; fewer is more readable | 72.9Δ 30.5 |
| DeepSeek V4 Pro | 17.33 | 0–20; mean of three runs | 78.8Δ 36.4 |
| GPT-6.1 Sol | 17.33 | 0–20; mean of three runs | 58.5Δ 16.1 |
| BTTF | 0.422 | 0–1; higher is more readable | 32.2Δ 10.2 |
| Human | 0.7 | 0–1; original rating | 42.4 |
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. | 439.444 | −14.502 |
| Source linesThe number of non-empty source lines. | 15 | +6 |
| Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value. | 2.944 | −4.416 |
Intercept 8.87 + feature contributions = -4.048 (log-odds).
Score = sigmoid(-4.048) = 0.017.
| Score | 0.845 |
|---|
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. | 47.933 | +1.635 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 1 | +1.001 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.123 | −0.258 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 15 | −0.218 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 13.714 | −0.218 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 15 | +0.077 |
Intercept 0.07 + feature contributions = 1.284 (log-odds).
Score = sigmoid(1.284) = 0.783.
| Score | 0.603 |
|---|
| Score | 10 |
|---|
Run 1
The code is logically structured with a clear separation between finding divisors and checking the condition. It is mostly flat, with only two nested loops and one conditional inside. Intent is mostly clear: it prints abundant numbers up to 1000, though the lack of a helper method or comment makes the outside loop's purpose slightly ambiguous. Code length is concise but arguably could be shortened with a divisor-sum method. Action granularity is good—most lines perform a single logical step, though the 'if' inside the inner loop adds mild visual noise. Reading flow is natural, but an explanatory comment or method name would improve clarity. Overall the code is readable but lacks minor documentation or decomposition.
Run 2
This code is highly readable due to its simple, logical structure and clear intent. It uses flat nesting with only one level of control flow inside the inner loop, making it easy to follow. The purpose—finding abundant numbers up to 1000—is evident from the loop variables and condition checks. Each line performs a single action, contributing to a natural top-down reading flow. The code is concise but would benefit from a brief comment explaining the mathematical goal.
Run 3
The code is highly readable. It has a simple, logical structure: an outer loop, an inner loop for checking divisors, a sum, and a final comparison. Nesting is only two levels deep, which is acceptable. The intent (finding abundant numbers up to 1000) is clear despite no comments, due to self-explanatory operations. The code is concise—no extra variables or unnecessary checks. Each line performs one logical action. The reading flow is natural: iterate, accumulate divisors, compare, print. Minor improvements could include a comment explaining the purpose or a constant for the upper bound, but as-is it is very clear.
Run 1
Code Structure: Logically organized, with divisor summation followed by a comparison and output. Nesting: Moderate nesting from two loops and a conditional, but short blocks remain easy to follow. Clarity of intent: The operations are clear, though identifying abundant numbers is not explicitly stated; descriptive names or a helper method would improve intent. Code length: Concise, without unnecessary statements. Action granularity: Each statement performs one clear action, with conventional loop headers. Reading flow: Natural top-to-bottom progression and consistent formatting make the code straightforward to read.
Run 2
Code Structure: Logically organized into candidate iteration, divisor summation, and output. Nesting: Moderate nesting from two loops and a conditional, but short blocks and consistent indentation keep it manageable. Clarity of intent: The logic clearly prints numbers whose proper divisors sum to more than the number (abundant numbers), though descriptive variable names and a named method would make this purpose more explicit. Code length: Concise, with no unnecessary statements. Action granularity: Each statement performs a single clear action; loop headers follow standard Java conventions. Reading flow: Natural top-to-bottom progression, with the output condition placed directly after the sum calculation.
Run 3
Code Structure: Logically organized into iteration, divisor summation, and output. Nesting: Moderate nesting from two loops and a conditional, but consistent indentation keeps it readable. Clarity of intent: The logic is understandable, though descriptive names and a comment identifying abundant numbers would clarify the purpose. Code length: Concise, with no unnecessary statements. Action granularity: Each statement performs a single clear action; loop headers follow standard Java conventions. Reading flow: Natural top-to-bottom progression, with the output condition placed directly after the sum calculation.