Sample

Dorn/java/210

Human rating uses the original dataset scale.

DatasetDorn
Human2.77
Lines50

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
30.6Δ 10.3
Scalabrino0.5740–1; higher is more readable
54.3Δ 33.9
Dorn0.3360–1; higher is more readable
27.3Δ 7.0
Mi0.3160–1; higher is more readable
30.4Δ 10.0
LLOC29Logical lines; fewer is more readable
13.5Δ 6.8
DeepSeek V4 Pro9.330–20; mean of three runs
37.2Δ 16.9
GPT-6.1 Sol12.330–20; mean of three runs
24.4Δ 4.0
BTTF0.460–1; higher is more readable
35.1Δ 14.8
Human2.771–5; original rating
20.3

Views

Download official ZIP ↗

Select the downloaded ZIP or its extracted folder. Files stay in your browser.

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(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.1334.806−44.049
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.14−7.71

Intercept 8.87 + feature contributions = -22.889 (log-odds).
Score = sigmoid(-22.889) = 0.

Score0.574

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Indentation frequencyHow rapidly indentation changes from line to line.44+0.785
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.51−0.769
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.70.961+0.66
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.46−0.635
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.49.958+0.288
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.125−0.275

Intercept 0.07 + feature contributions = -0.68 (log-odds).
Score = sigmoid(-0.68) = 0.336.

Score0.316
Score29
Run 1

The code shows basic structure with sequential Selenium actions grouped logically, but has several readability issues. The custom wait loops are duplicated verbatim, increasing length and maintenance burden. Each loop uses an infinite for with a 'second >= 90' timeout check, which is a non-standard pattern that obscures intent. The empty catch blocks silently swallow exceptions, hiding failures and creating ambiguity. The mixing of waits (explicit Thread.sleep versus custom loops) disrupts reading flow. Action granularity is generally one action per line, which is good, but the long parameterized selectors and RuntimeVariables.replace calls add noise. The second loop's conditional is split across multiple lines with awkward indentation, making it harder to scan. Overall, while the sequential logic is understandable, the repetition, silent exception handling, and inconsistent waiting mechanisms reduce clarity.

Run 2

The code shows some logical structure with separated polling loops and sequential Selenium actions, but suffers from several readability issues. The polling loops are duplicated with no helper method, violating DRY principles and increasing length. Empty catch blocks obscure error handling intent, and magic numbers (90, 30000, 5000) are unexplained. The RuntimeVariables.replace("") calls add noise without clarity. Nesting is moderate but loops contain try-catch blocks, making flow harder to follow. Action granularity is adequate but some lines are long. Reading flow is generally sequential but interrupted by repeated boilerplate. Overall, functional but not clean.

Run 3

The code has a clear overall purpose of navigating a web interface via Selenium, with a consistent pattern for waiting and retrying. However, it suffers from significant readability issues: deep nesting in the retry loops with empty catch blocks, magic numbers (90, 1000, 30000, 5000), repeated boilerplate code, and unclear intent for the sleep and wait operations. The loops are convoluted with infinite for-loops and manual timeout checks, making the code harder to follow. The action granularity is acceptable but the reading flow is disjointed due to repetitive blocks and unclear abstractions. While the sequence of actions is logically ordered, the lack of helper methods or constants obscures the intent. Overall, the code is functional but not easily readable and would benefit from refactoring to reduce nesting, eliminate magic numbers, and extract common waiting logic.

Run 1

Code Structure: The navigation and verification steps are logically ordered, but duplicated polling loops and repeated page-load setup lack abstraction. Nesting: Mostly flat action sequences surround moderately nested loops, try blocks, and conditionals. Clarity of intent: Selenium method names communicate actions, but opaque selectors, magic timeout values, empty exception handlers, and unnecessary-looking replacements obscure details. Code length: Manageable overall, though repeated waiting and setup code adds avoidable length. Action granularity: Each statement generally performs one action, making individual steps easy to follow. Reading flow: The procedural sequence is natural, but verbose selectors, inconsistent wrapping, fixed sleeps, and silent exception handling interrupt comprehension.

Run 2

Code Structure: The navigation, search, and verification steps are logically ordered, but duplicated polling loops and repeated page-load setup would benefit from helper methods. Nesting: Most code is flat; polling loops introduce moderate nesting through try and if blocks. Clarity of intent: Selenium operations make the overall workflow understandable, but opaque selectors, magic timeouts, and empty exception handlers obscure details. Code length: Reasonably short, though repeated waits and RuntimeVariables.replace calls add unnecessary verbosity. Action granularity: Generally one operation per statement, making individual steps easy to identify. Reading flow: The sequence is natural, but long XPath expressions, fixed sleeps, and repeated boilerplate interrupt readability.

Run 3

Code Structure: The navigation, search, and polling steps are logically ordered, but duplicated polling loops and repeated page-load setup lack abstraction. Nesting: Mostly flat execution, with moderate nesting inside the polling loops. Clarity of intent: Selenium method names reveal the basic workflow, but opaque element identifiers, positional XPath selectors, magic timeout values, and silently swallowed exceptions obscure details. Code length: Reasonably short, though repeated waiting logic and empty-string replacement calls add unnecessary verbosity. Action granularity: Each statement performs one primary action; wrapped lines remain understandable. Reading flow: The sequence is natural and whitespace separates phases, but inconsistent indentation, fixed sleeps, and missing descriptive helper names interrupt readability.