Sample
Dorn/java/120
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 36.8Δ 5.3 |
| Scalabrino | 0.456 | 0–1; higher is more readable | 36.8Δ 5.2 |
| Dorn | 0.204 | 0–1; higher is more readable | 17.3Δ 24.8 |
| Mi | 0.264 | 0–1; higher is more readable | 25.9Δ 16.2 |
| LLOC | 26 | Logical lines; fewer is more readable | 18.8Δ 23.3 |
| DeepSeek V4 Pro | 15.33 | 0–20; mean of three runs | 79.9Δ 37.9 |
| GPT-6.1 Sol | 16.67 | 0–20; mean of three runs | 73.8Δ 31.8 |
| BTTF | 0.549 | 0–1; higher is more readable | 59.6Δ 17.5 |
| Human | 3.22 | 1–5; original rating | 42.1 |
Views
Select the downloaded ZIP or its extracted folder. Files stay in your browser.
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. | 1220.707 | −40.283 |
| Source linesThe number of non-empty source lines. | 50 | +20 |
| 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.901 | −7.352 |
Intercept 8.87 + feature contributions = -18.765 (log-odds).
Score = sigmoid(-18.765) = 0.
| Score | 0.456 |
|---|
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. | 113.961 | −1.162 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 49.478 | +0.282 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 37 | −0.274 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 26 | +0.162 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.101 | −0.035 |
Intercept 0.07 + feature contributions = -1.363 (log-odds).
Score = sigmoid(-1.363) = 0.204.
| Score | 0.264 |
|---|
| Score | 26 |
|---|
Run 1
The code is generally readable with clear, focused test methods and good action granularity. Each test follows a logical structure: arrange-act-assert for create/remove, and field-by-field setup for update. Variable names are descriptive and consistent. The code is flat with no unnecessary nesting. However, the update test has repetitive setter calls that could be extracted into a helper method, and 'testUpdateNew' is empty, indicating incomplete implementation. These minor issues slightly impact clarity and conciseness, but overall the code demonstrates good readability.
Run 2
The code is generally readable, with clear method names and straightforward test logic. Each method is concise and focused on a single test operation. However, the action granularity could improve: multiple setter calls in testUpdateExisting are repetitive but logically grouped. Nesting is minimal, and structure follows a linear flow. The main drawback is incomplete code in testUpdateExisting (the method ends abruptly after setting fields), which harms clarity of intent. Overall, it is easy to follow but slightly verbose in repetitive sections.
Run 3
The code demonstrates clear structure, flat nesting, and consistent formatting across test methods. Each action is on its own line, enhancing readability. The test names are descriptive, and the use of helper methods like addSCProductVersion() and randomString() shows good abstraction. However, the testUpdateExisting method is verbose, containing ten setter calls that could be grouped or refactored into a helper method. The testUpdateNew method appears incomplete or lacks meaningful assertions, reducing clarity of intent. Overall, the code is maintainable and readable, but minor improvements in method length and test completeness would increase the score.
Run 1
Code Structure: Separate test methods provide logical organization, although the snippet ends midway through testUpdateExisting. Nesting: Flat method bodies make the code easy to follow. Clarity of intent: Descriptive test names and explicit persistence operations communicate purpose; testUpdateNew is less clear because it only calls a helper with no visible assertion. Code length: Generally concise, but repetitive setters and excessive blank lines make the update test visually long. Action granularity: Each statement performs one clear action. Reading flow: Setup, operation, and verification follow a natural sequence in the completed tests, though the long fetch statement and incomplete final method slightly interrupt readability.
Run 2
Code Structure: Separate, descriptively named test methods organize creation, removal, and updates logically, though the update test is incomplete. Nesting: The code is flat, with no nested control flow. Clarity of intent: Method names, persistence operations, and assertions communicate most purposes clearly; testUpdateNew delegates entirely to a helper, obscuring what is verified. Code length: The code is straightforward but repetitive, with verbose variable names and excessive blank lines between setters. Action granularity: Each statement performs one primary action, making operations easy to follow. Reading flow: Tests generally follow a natural setup-action-verification sequence, but the long setter sequence slows scanning, and the truncated final method interrupts the flow.
Run 3
Code Structure: Separate test methods logically organize creation, removal, and updates, although the final method is incomplete. Nesting: All visible code is flat, making it easy to follow. Clarity of intent: Descriptive method names, variables, and assertions communicate purpose well; testUpdateNew is less explicit because its behavior depends entirely on a helper. Code length: Mostly concise, but repetitive setters and blank lines between every statement make the update test unnecessarily lengthy. Action granularity: Each statement performs one clear action. Reading flow: Tests generally follow a natural setup-action-verification sequence, though the truncated update test lacks a visible completion or verification.