Sample
Dorn/java/145
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 37.6Δ 5.0 |
| Scalabrino | 0.255 | 0–1; higher is more readable | 17.1Δ 25.6 |
| Dorn | 0.693 | 0–1; higher is more readable | 64.6Δ 22.0 |
| Mi | 0.476 | 0–1; higher is more readable | 49.9Δ 7.2 |
| LLOC | 25 | Logical lines; fewer is more readable | 21.4Δ 21.2 |
| DeepSeek V4 Pro | 8.33 | 0–20; mean of three runs | 31.2Δ 11.4 |
| GPT-6.1 Sol | 10.33 | 0–20; mean of three runs | 12.0Δ 30.6 |
| BTTF | 0.539 | 0–1; higher is more readable | 56.3Δ 13.6 |
| Human | 3.23 | 1–5; original rating | 42.6 |
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. | 1196.315 | −39.478 |
| 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. | 5.119 | −7.679 |
Intercept 8.87 + feature contributions = -18.287 (log-odds).
Score = sigmoid(-18.287) = 0.
| Score | 0.255 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 46 | +0.854 |
| 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. | 66.961 | +0.829 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 51 | −0.769 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 47 | −0.658 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 49.75 | +0.286 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 67 | +0.277 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.104 | −0.072 |
Intercept 0.07 + feature contributions = 0.817 (log-odds).
Score = sigmoid(0.817) = 0.693.
| Score | 0.476 |
|---|
| Score | 25 |
|---|
Run 1
The code suffers from significant readability issues. While it follows a basic linear structure, the block is dominated by two identical polling loops with empty catch blocks and magic numbers, obscuring intent. Nesting is relatively flat, but the loops' structure is confusing. The purpose of each action is unclear without domain knowledge; method names like loadRequiredJavaScriptModules() are helpful, but polling logic and hard-coded XPath strings reduce clarity. Code length is unnecessarily long due to duplicated loops. Action granularity is mostly one action per line, which is good, but the overall reading flow is repetitive and disorganized. The code appears cut off mid-loop, further hurting readability.
Run 2
The code is structured as a single test method, but it lacks logical decomposition. The repeated polling loop (with identical timeout logic) is duplicated, increasing length and reducing clarity. Nesting is moderate, but the loop with an ambiguous empty catch block obscures intent and swallows exceptions silently. Action granularity is acceptable—one action per line—but reading flow is poor due to duplicated blocks and unclear loop conditions. Magic numbers (90, 1000, 30000, 5000) are unexplained, and the 'forever loop' pattern is a code smell. The intent is partially clear (verify a document type was deleted) but the test is brittle and unnecessarily verbose. Overall it is readable in small pieces but fails as a cohesive, maintainable unit.
Run 3
The code shows a basic test structure with a clear intent to verify document type deletion, but readability is hindered by repetitive wait-for-element loops. The nested timeout logic (loop, if, try-catch, break) creates unnecessary complexity - a helper method would improve this. The repeated Thread.sleep and loadRequiredJavaScriptModules calls add noise. XPath selectors are somewhat readable but could be extracted as constants. Action granularity is generally one-action-per-line, aiding readability, but the loop structure interrupts the natural reading flow. Overall, the code is understandable but verbose and repetitive, making it less maintainable.
Run 1
Code Structure: The test follows a logical sequence, but duplicated polling logic and the incomplete ending weaken organization. Nesting: Polling loops contain nested try/if blocks, adding moderate complexity. Clarity of intent: Selenium calls and the test name provide context, but the positional XPath, unexplained delays, and empty exception handlers obscure what is being verified. Code length: Repeated navigation and waiting code could be extracted into helpers for concision. Action granularity: Each statement generally performs one action, with sensible line wrapping. Reading flow: Execution proceeds naturally from navigation to interaction and assertion, but repeated setup interrupts the flow, and the truncated snippet prevents a complete understanding of the test.
Run 2
Code Structure: The test follows a logical sequence, but duplicated polling logic and the incomplete ending weaken organization. Nesting: Polling loops contain try blocks and nested conditionals, creating moderate indentation depth. Clarity of intent: Selenium calls and the test name suggest the purpose, but the positional XPath, magic timeout values, and empty exception handlers obscure details; deletion is not shown in the excerpt. Code length: Repeated waiting logic adds unnecessary length and could be extracted into a helper. Action granularity: Statements generally perform one action each, with reasonable line wrapping. Reading flow: Navigation and assertions proceed sequentially, but repeated setup, fixed sleeps, and verbose polling interrupt the flow.
Run 3
Code Structure: The test follows a recognizable setup, navigation, and assertion sequence, but repeated polling logic lacks helper extraction, and the snippet is incomplete. Nesting: Polling loops contain moderately deep try/if nesting, adding visual complexity. Clarity of intent: The class name and Selenium calls suggest a document-type test, but the positional XPath does not explain what is asserted, and no deletion is shown. Empty catch blocks and unexplained timeout values further obscure intent. Code length: Repeated waiting and setup code make the snippet longer than necessary. Action granularity: Most statements perform one action, with readable line wrapping. Reading flow: Execution is mostly sequential, but duplicated waits, arbitrary sleeps, and the abrupt ending interrupt the flow.