Sample

Dorn/java/110

Human rating uses the original dataset scale.

DatasetDorn
Human3.32
Lines50

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
38.4Δ 9.2
Scalabrino0.5710–1; higher is more readable
53.5Δ 5.9
Dorn0.3250–1; higher is more readable
25.3Δ 22.3
Mi0.4610–1; higher is more readable
48.2Δ 0.6
LLOC27Logical lines; fewer is more readable
16.9Δ 30.8
DeepSeek V4 Pro120–20; mean of three runs
53.6Δ 6.0
GPT-6.1 Sol130–20; mean of three runs
30.6Δ 17.0
BTTF0.4740–1; higher is more readable
38.2Δ 9.5
Human3.321–5; original rating
47.6

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.1176.519−38.825
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.159−7.738

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

Score0.571

Feature contributions

FeatureValueContribution
(log-odds)
Indentation frequencyHow rapidly indentation changes from line to line.45+0.819
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
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.45−0.612
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.76+0.446
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.49.805+0.286
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.114−0.168

Intercept 0.07 + feature contributions = -0.731 (log-odds).
Score = sigmoid(-0.731) = 0.325.

Score0.461
Score27
Run 1

The code has a clear, sequential structure with consistent patterns, but suffers from significant readability issues. The polling loops are duplicated, increasing length and maintenance burden. Empty catch blocks hide exceptions and make debugging difficult. The 'for (int second = 0;; second++)' pattern is unconventional compared to a standard while loop, obscuring intent. Magic numbers (90, 1000, 30000) are scattered without named constants. Method calls are generally one per line, which is good, but the nested try-catch inside loops creates unnecessary nesting. The repeated 'loadRequiredJavaScriptModules()' calls suggest a side-effect pattern that isn't self-documenting. While the code is functional and organized into logical blocks, the lack of abstraction for the polling behavior and unclear timeout handling reduce overall clarity. The structure somewhat mitigates the problems, but verbose Selenium calls with XPath strings further reduce readability.

Run 2

The code has moderate readability. Structure is logical with clear sections (navigation, waiting loops, clicks) but the repeating timeout pattern is verbose. Nesting is mostly flat but the infinite for loops with manual timeout checks are awkward. Intent is relatively clear—navigate, wait for elements, interact—but the empty catch blocks and repeated loadRequiredJavaScriptModules() calls add ambiguity. Code length is unnecessarily long due to duplicated timeout logic. Action granularity is mostly good, with one Selenium action per line, though some lines are long. Reading flow is natural sequentially but interrupted by repetitive boilerplate. Refactoring the timeout loops into a helper method would significantly improve clarity and reduce duplication.

Run 3

The code shows clear test automation intent and follows a consistent pattern, but has several readability issues. The polling loop with `for (int second = 0;; second++)` and empty catch blocks reduces clarity, and the empty catch block (`catch (Exception e) { }`) hides failures. Duplication of the timeout loop logic could be extracted into a helper method. Nesting is minimal and action granularity is generally one action per line, but line wrapping on selector strings breaks reading flow. Variable names like `second` are unclear—`secondsElapsed` would be better. The magic number 90 and repeated `loadRequiredJavaScriptModules()` calls lack explanation. Overall the structure is logical but the repeated boilerplate and silent exception swallowing hurt maintainability.

Run 1

Code Structure: The Selenium steps follow a logical sequence, but duplicated polling loops should be extracted into a reusable helper. Nesting: Moderate nesting within the loops adds complexity without becoming excessive. Clarity of intent: Navigation and element interactions are mostly clear, but opaque selectors, magic timeout values, and empty exception handlers obscure details. Code length: Repeated waits and module-loading calls make the snippet longer than necessary. Action granularity: Each statement generally performs one action, making individual steps easy to identify. Reading flow: Execution proceeds naturally from opening the page to adding Web Content Display, although inline polling blocks interrupt the main workflow and inconsistent continuation indentation slightly reduces readability.

Run 2

Code Structure: The Selenium steps follow a logical sequence, but duplicated polling loops would be clearer as a reusable helper. Nesting: Moderate nesting in the loops, try blocks, and conditionals makes waiting logic harder to scan. Clarity of intent: Navigation and clicks are understandable, but raw XPath selectors, magic timeout values, and silently swallowed exceptions obscure details. Code length: Reasonably short overall, though repeated waiting and module-loading code adds verbosity. Action granularity: Each statement generally performs one action, with sensible line breaks for longer calls. Reading flow: Execution proceeds naturally from navigation to adding Web Content Display, but repetitive boilerplate and inconsistent continuation indentation interrupt the flow.

Run 3

Code Structure: The navigation and interaction steps are logically ordered, but duplicated polling loops would be clearer as a helper method. Nesting: Moderate nesting within the loops makes the waiting logic harder to scan, though it is not excessive. Clarity of intent: Selenium calls and descriptive link text convey the overall workflow; opaque XPath IDs, magic timeout values, and empty exception handlers obscure details. Code length: The snippet is reasonably short, but repeated waiting and initialization code adds unnecessary bulk. Action granularity: Each statement generally performs one action, with sensible wrapping for longer calls. Reading flow: The sequence follows a natural browser interaction flow, but verbose polling blocks interrupt it, and inconsistent indentation slightly reduces readability.