Sample

Scalabrio50

Human rating uses the original dataset scale.

DatasetScalabrino
Human3.11
Lines31

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
50.3Δ 28.9
Scalabrino0.4220–1; higher is more readable
38.2Δ 16.8
Dorn0.7460–1; higher is more readable
85.4Δ 64.1
Mi0.1890–1; higher is more readable
45.7Δ 24.4
LLOC20Logical lines; fewer is more readable
25.9Δ 4.5
DeepSeek V4 Pro9.670–20; mean of three runs
17.3Δ 4.0
GPT-6.1 Sol130–20; mean of three runs
5.0Δ 16.3
BTTF0.4540–1; higher is more readable
24.1Δ 2.8
Human3.111–5; original rating
21.4

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.932.689−30.779
Source linesThe number of non-empty source lines.31+12.4
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.3.5−5.25

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

Score0.422

Feature contributions

FeatureValueContribution
(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.76+0.446
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.76+0.422
Indentation frequencyHow rapidly indentation changes from line to line.30+0.301
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.29−0.245
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.083+0.138
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.31−0.061
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.29.792+0.007

Intercept 0.07 + feature contributions = 1.077 (log-odds).
Score = sigmoid(1.077) = 0.746.

Score0.189
Score20
Run 1

The code follows a generally logical structure but suffers from multiple readability issues. The method signature and guard clause are clear, but the core logic is overly complex. There is significant nesting: three levels of loops/conditionals make the intent hard to follow. The variable names are mostly reasonable (e.g., `updatingSelection`, `rowItem`), but the purpose of some variables like `updatingSelectionViaTreeSelection` is unclear. The code length is moderate but could be shortened by extracting helper methods. Action granularity is problematic - several lines contain multiple operations (e.g., the nested cast and method call chain). The reading flow is somewhat disorganized, especially in the inner loop where the logic jumps between tree selection updates and row selection. The commented-out line at the end adds ambiguity. Overall, the code works but would benefit from refactoring to reduce nesting and improve clarity.

Run 2

The code lacks clear structure and is poorly documented. It uses a guard clause for updatingSelection but then nests two loops within it, increasing indentation levels. The nested loop logic is not extracted into well-named helper methods, and variable names like 'e', 'j', 'i', 'target' are too generic. The intent of updatingSelectionViaTreeSelection is unclear from the name alone. Multiple actions are packed into single statements (e.g., casting and getUserObject() chained). The commented-out code at the end adds noise. While the code is not horrendous, it lacks readability: no method decomposition, unclear variable naming, and mixed responsibilities. Score 9/20.

Run 3

The code has some logical structure and clear variable names, but it suffers from deep nesting and multiple responsibilities. The primary issue is nested loops and conditional blocks that obscure intent—the inner loop with a cast chain across multiple lines and the duplicate boolean flag manipulation reduce clarity. Action granularity is inconsistent: some lines contain multiple actions (e.g., setting a boolean, adding a selection, and resetting the boolean within a single if block). The reading flow is disrupted by the nested conditionals and lack of helper methods. The method mixes UI updates, type checking, and selection logic without clear separation. Overall, it is somewhat understandable due to naming, but the tangled structure and nesting make it hard to follow for a new reader.

Run 1

Code Structure: The method logically groups selection guarding, target normalization, row matching, and scrolling, but mixes these responsibilities inline. Nesting: The outer guard, two loops, and conditional checks create substantial nesting that slows comprehension. Clarity of intent: Method and flag names convey selection synchronization, though identity comparison and the Fig-to-owner conversion require domain knowledge. Code length: Reasonably compact, but helper methods and an early return could simplify it; the commented-out call adds clutter. Action granularity: Most statements perform one action, although the chained, cast-heavy row-item lookup is visually dense. Reading flow: Execution follows a natural sequence, but inconsistent indentation and manual flag toggling interrupt readability. The lack of try/finally also makes flag restoration less clearly reliable.

Run 2

Code Structure: Logically groups reentrancy protection, target normalization, row matching, and scrolling, but combines several responsibilities in one method. Nesting: The outer guard, two loops, and conditional matching create substantial indentation. Clarity of intent: Descriptive method and flag names convey selection synchronization, though identity comparison and flag interactions require interpretation. Code length: Reasonably compact, but the commented-out call adds noise and row extraction could be simplified. Action granularity: Generally one action per statement, although chained calls and casting make row extraction dense. Reading flow: Processing follows a natural sequence, but awkward line wrapping and manual flag toggling interrupt readability; an early return and helper methods would improve flow.

Run 3

Code Structure: The method logically groups reentrancy protection, target normalization, row matching, selection updates, and scrolling, but mixes these responsibilities inline. Nesting: An outer condition, two loops, and an inner condition create substantial nesting; a guard clause and helper methods would flatten it. Clarity of intent: Descriptive method and flag names convey selection synchronization, though generic Object variables, reference equality, and the lengthy tree-node cast require interpretation. Code length: Reasonably compact, but extracting row lookup and target normalization would simplify the main logic; the commented-out call adds clutter. Action granularity: Most statements perform one action, although chained calls and casting make row-item extraction dense. Reading flow: Execution follows a natural sequence, but repeated flag toggling and awkward multiline formatting interrupt readability.