Sample

Scalabrio193

Human rating uses the original dataset scale.

DatasetScalabrino
Human3.78
Lines17

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett0.0170–1; higher is more readable
82.9Δ 23.9
Scalabrino0.2610–1; higher is more readable
22.1Δ 36.9
Dorn0.0550–1; higher is more readable
10.6Δ 48.5
Mi0.0680–1; higher is more readable
27.6Δ 31.4
LLOC6Logical lines; fewer is more readable
86.9Δ 27.9
DeepSeek V4 Pro140–20; mean of three runs
49.2Δ 9.8
GPT-6.1 Sol170–20; mean of three runs
58.5Δ 0.5
BTTF0.5950–1; higher is more readable
68.8Δ 9.8
Human3.781–5; original rating
59.0

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.373.285−12.318
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.957−7.436
Source linesThe number of non-empty source lines.17+6.8

Intercept 8.87 + feature contributions = -4.084 (log-odds).
Score = sigmoid(-4.084) = 0.017.

Score0.261

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.143−2.392
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.17+0.434
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.15.771−0.189
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.081+0.153
Indentation frequencyHow rapidly indentation changes from line to line.17−0.149
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.17+0.031

Intercept 0.07 + feature contributions = -2.847 (log-odds).
Score = sigmoid(-2.847) = 0.055.

Score0.068
Score6
Run 1

The code has a clear structure with a single condition and straightforward if-else logic. Nesting is minimal (only one level deep). Intent is generally clear: parse a list of primary key join columns, handling single and multiple elements differently. However, readability suffers from several issues: the method name is long ('parserPrimaryKeyJoinColumnList'), there is no documentation explaining why single vs multiple elements are handled differently, and the initial condition checks emptiness but returns null at the end rather than using a guard clause for early return. Action granularity is good - each line performs one logical action. The reading flow is mostly natural but could be improved by flipping the condition to return null early, reducing nesting. Overall the code is understandable but could be more concise and expressive with better naming and restructuring, earning a moderate score.

Run 2

The code has a clear purpose and logical structure, but suffers from unnecessary verbosity. The method name is descriptive but lengthy, and the nested if-else creates minor depth. The 'return null' at the end breaks natural reading flow—early returns would improve clarity. The ternary-style conditional (size check) could be simplified, and the null parameter in the nested method call is ambiguous without context. The use of MockHelper.isNotEmpty is clear, but the method would benefit from guard clauses to reduce nesting. While each action is on its own line, the overall structure feels slightly bloated for what it accomplishes.

Run 3

The code has a clear purpose and a reasonably logical structure: it handles a list of primary key join columns, delegating single-element cases and creating an annotation for multiple elements. Nesting is shallow, and action granularity is mostly one action per line. However, readability is reduced by the use of tabs for indentation and the early return at the end, which makes the flow slightly less natural. The condition and branching are easy to follow, but the method name is long and somewhat vague ('parserPrimaryKeyJoinColumnList' instead of 'parse...'), and the logic could be more concise with a guard clause for the empty case. Overall, it is understandable but could benefit from minor formatting and naming improvements.

Run 1

Code Structure: Logically organized around empty, single-item, and multiple-item cases. Nesting: Two conditional levels are manageable, though an early return for an empty list would flatten the method. Clarity of intent: Descriptive names and annotation constants make the purpose clear; the null argument is less self-explanatory. Code length: Concise overall, with a redundant else after a return and minor excess whitespace. Action granularity: Each statement performs one clear action, and the multiline create call separates its arguments cleanly. Reading flow: Natural progression from validation to case handling, although placing the empty-list return first would make the flow more direct.

Run 2

Code Structure: Logically organized around empty, single-item, and multiple-item cases. Nesting: Two conditional levels are manageable, though an early return for an empty list would flatten the method. Clarity of intent: Descriptive names and explicit branches clarify the purpose; the null argument and null return lack explanation. Code length: Concise overall, with a redundant else after a return and minor excess whitespace. Action granularity: Each statement performs one clear action, and the multiline create call separates its arguments cleanly. Reading flow: Natural progression from checking the list to selecting the appropriate annotation form, followed by the empty-list fallback.

Run 3

Code Structure: Logically separates empty, single-item, and multiple-item cases. Nesting: Two conditional levels are manageable, though an early return for an empty list would flatten the method. Clarity of intent: Descriptive names and annotation constants communicate the purpose; the null argument is less explicit. Code length: Concise overall, with a slightly unnecessary else after a return. Action granularity: Each statement performs one clear action, and the multiline create call makes its arguments easy to scan. Reading flow: Natural progression from checking the list to selecting the appropriate annotation representation, although the final null return requires readers to track the outer condition.