Sample
JetBrains/e45
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 67.8Δ 10.2 |
| Scalabrino | 0.769 | 0–1; higher is more readable | 66.9Δ 9.3 |
| Dorn | 0.225 | 0–1; higher is more readable | 17.8Δ 39.8 |
| Mi | 0.507 | 0–1; higher is more readable | 54.2Δ 3.4 |
| LLOC | 7 | Logical lines; fewer is more readable | 85.2Δ 27.5 |
| DeepSeek V4 Pro | 12 | 0–20; mean of three runs | 16.1Δ 41.5 |
| GPT-6.1 Sol | 16 | 0–20; mean of three runs | 26.7Δ 30.9 |
| BTTF | 0.563 | 0–1; higher is more readable | 82.2Δ 24.6 |
| Human | 0.77 | 0–1; original rating | 57.6 |
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. | 429.104 | −14.16 |
| 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.45 | −6.676 |
| Source linesThe number of non-empty source lines. | 10 | +4 |
Intercept 8.87 + feature contributions = -7.966 (log-odds).
Score = sigmoid(-7.966) = 0.
| Score | 0.769 |
|---|
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. | 1 | +1.001 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| 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. | 104 | −0.74 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 1 | −0.703 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 8.81 | −0.287 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 10 | +0.191 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.093 | +0.035 |
Intercept 0.07 + feature contributions = -1.236 (log-odds).
Score = sigmoid(-1.236) = 0.225.
| Score | 0.507 |
|---|
| Score | 7 |
|---|
Run 1
The code is simple and readable at a basic level, but it has significant readability issues. The class structure is minimal, and the main method lacks indentation, which hurts visual organization. The loop is flat and easy to follow, but the code does not handle pluralization (e.g., '1 bottles'), which makes the output logically inconsistent. The action granularity is acceptable (one statement per line), but the multiple print statements inside the loop are not separated by blank lines, reducing readability. The reading flow is straightforward but lacks comments or a helper method to clarify intent. Overall, it is concise but would benefit from better formatting and minor logic improvements.
Run 2
The code has a clear, simple purpose and is logically structured as a single loop followed by final output. It avoids unnecessary complexity and uses flat nesting, with one action per line, which supports readability. However, there are issues: inconsistent indentation, lack of a blank line between loop and final verses, and awkward phrasing like '0 bottles' instead of 'no more bottles' inside the loop. Variable naming is acceptable but minimal. Overall, the intent is understandable, but formatting and minor grammar detract from polish.
Run 3
The code is functional and relatively short, but it lacks formatting and clarity. Indentation is inconsistent, and the absence of spaces around operators and after commas makes it harder to read. The logic is straightforward, but the final verses are not integrated into the loop cleanly; the transition from the loop to the 'No more bottles' lines is abrupt and requires the reader to mentally track the loop's end state. The action granularity is acceptable, with one statement per line, but the reading flow suffers from the lack of visual structure. Overall, it is understandable for a simple task like '99 Bottles of Beer,' but it would benefit from consistent indentation, better spacing, and perhaps a comment explaining the loop's behavior and the final verses.
Run 1
Code Structure: A single main method with a loop followed by the final verse is logically organized, though inconsistent indentation obscures block boundaries. Nesting: Shallow, with only one loop inside the method. Clarity of intent: The class name and printed lyrics make the purpose obvious; a more descriptive loop variable could help. Code length: Concise, with no unnecessary abstractions or repetition beyond the required output. Action granularity: Each print statement performs one action on its own line; the loop header conventionally groups initialization, condition, and decrement. Reading flow: Execution follows the song naturally, but missing spaces around operators and poor indentation reduce scanability.
Run 2
Code Structure: A straightforward class, main method, loop, and final output provide logical organization, though inconsistent indentation obscures block boundaries. Nesting: Minimal and appropriate, with only one loop inside the method. Clarity of intent: BeerSong and the printed lyrics make the purpose obvious; a descriptive variable name such as bottles would improve clarity. Code length: Concise, with no unnecessary abstractions or repetition beyond the required output. Action granularity: Each print statement occupies its own line; the loop header conventionally combines initialization, condition, and decrement. Reading flow: The countdown followed by the closing verses reads naturally, but missing spaces and poor indentation reduce scanability.
Run 3
Code Structure: Logically organized around a countdown loop followed by the closing verses, but inconsistent indentation weakens visual structure. Nesting: Shallow and easy to follow, with only one loop inside main. Clarity of intent: The BeerSong class name and printed lyrics make the purpose obvious; a descriptive counter name would improve clarity. Code length: Concise, with no unnecessary abstraction or repetition beyond the required output. Action granularity: Each print operation occupies its own line, although the loop header combines initialization, condition, and decrement in standard Java fashion. Reading flow: Execution proceeds naturally from countdown to conclusion, but minimal spacing and long output lines reduce scanning ease.