Sample

Scalabrio196

Human rating uses the original dataset scale.

DatasetScalabrino
Human2.56
Lines11

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
60.3Δ 57.0
Scalabrino0.0420–1; higher is more readable
2.5Δ 0.8
Dorn0.2010–1; higher is more readable
25.6Δ 22.4
Mi0.0090–1; higher is more readable
4.0Δ 0.8
LLOC4Logical lines; fewer is more readable
93.7Δ 90.5
DeepSeek V4 Pro9.330–20; mean of three runs
15.6Δ 12.3
GPT-6.1 Sol170–20; mean of three runs
58.5Δ 55.3
BTTF0.4150–1; higher is more readable
17.1Δ 13.8
Human2.561–5; original rating
3.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.539.758−17.812
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.574−6.86
Source linesThe number of non-empty source lines.11+4.4

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

Score0.042

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.115−1.206
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.1+1.001
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.1−0.703
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.9.259−0.28
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.082+0.144

Intercept 0.07 + feature contributions = -1.381 (log-odds).
Score = sigmoid(-1.381) = 0.201.

Score0.009
Score4
Run 1

The code has a repetitive structure that makes it hard to read and maintain. Each of the three assignments follows the same pattern: a null check, a copy constructor call, and a fallback to an empty list. The long lines wrapped with indentation increase cognitive load. While the intent is clear - initializing three list fields from a collector - the implementation is unnecessarily verbose. The repeated null checks and constructor calls could be extracted into a helper method or use a utility like Optional. The code is flat (no deep nesting) and each logical action is on its own line, but the ternary expressions span multiple lines, making the flow disjointed. Overall, it reads like boilerplate that obscures the simple goal of defensive copying with empty-list defaults.

Run 2

The code structure is logical, with each initializer handled in a consistent pattern. Nesting is minimal, though conditional ternaries add some complexity. Intent is clear: defensively copy lists or provide empty immutable fallbacks. However, readability suffers due to repetitive ternary constructs and line breaks that disrupt flow. Action granularity is reasonable, but lines are unnecessarily long and wrapped awkwardly. The repeated use of `readerCollector.getX() != null` inside both the condition and true-branch also introduces redundancy that could be simplified. Overall, it is understandable but not highly readable; would benefit from a helper method or null-safe copy utility.

Run 3

The code is repetitive and verbose, with three nearly identical blocks that obscure its purpose. Each field assignment uses a null-check/ternary pattern that is hard to scan due to line breaks and generic type parameters. The constructor's intent—to defensively copy potentially null lists—is clear but buried under boilerplate. Nesting is low, but the long ternary expressions create visual clutter. Each assignment spans multiple lines but represents a single logical action, so action granularity is acceptable. However, the lack of helper methods or reusable logic reduces readability. The reading flow is disrupted by inconsistent spacing (e.g., space before closing parenthesis) and the need to mentally parse each conditional. Refactoring with a utility method would significantly improve clarity.

Run 1

Code Structure: Three related initializer assignments are logically grouped in a straightforward constructor. Nesting: Flat structure with simple ternary expressions and no nested control flow. Clarity of intent: Descriptive names clearly communicate copying available initializers or using empty lists when absent. Code length: Appropriately short, although repeated getter calls and verbose generic types add some clutter. Action granularity: Each statement performs one field assignment, with conditional selection formatted across lines for readability. Reading flow: Consistent formatting and parallel assignment patterns make the code easy to follow, though long identifiers and repeated null-check/copy logic slightly hinder scanning.

Run 2

Code Structure: Three related field initializations are logically organized and consistently formatted. Nesting: Flat assignments with simple ternary expressions avoid deep nesting. Clarity of intent: Descriptive names clearly convey copying initializer lists or using empty lists when null. Code length: Concise overall, though repeated getter calls and verbose generic declarations add visual weight. Action granularity: Each statement initializes one field; multiline ternaries remain cohesive and easy to distinguish. Reading flow: The repeated pattern supports predictable reading, but long identifiers and similar expressions require attention to differentiate the three initializer categories.

Run 3

Code Structure: Three related field initializations are logically grouped and consistently formatted. Nesting: Flat assignments with simple ternary expressions avoid deep nesting. Clarity of intent: Descriptive names make the defensive-copy-or-empty-list behavior clear, though the distinction between array and non-array collection initializers requires some domain knowledge. Code length: Reasonably concise, but repeated null checks, getter calls, and explicit generic types add verbosity. Action granularity: Each statement performs one field initialization, with line breaks separating the condition and alternatives. Reading flow: The parallel structure is easy to follow, although long identifiers and repeated expressions slightly slow scanning.