Sample

Scalabrio8

Human rating uses the original dataset scale.

DatasetScalabrino
Human3.11
Lines33

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
32.7Δ 11.3
Scalabrino0.2490–1; higher is more readable
21.1Δ 0.3
Dorn0.5190–1; higher is more readable
59.8Δ 38.4
Mi0.350–1; higher is more readable
62.8Δ 41.5
LLOC20Logical lines; fewer is more readable
25.9Δ 4.5
DeepSeek V4 Pro13.670–20; mean of three runs
43.2Δ 21.9
GPT-6.1 Sol150–20; mean of three runs
19.6Δ 1.8
BTTF0.5030–1; higher is more readable
39.2Δ 17.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.1202.863−39.694
Source linesThe number of non-empty source lines.33+13.2
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.978−5.967

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

Score0.249

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.62+1.039
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.33+0.404
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.33−0.336
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.117−0.2
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.33−0.132
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.31.778+0.034

Intercept 0.07 + feature contributions = 0.075 (log-odds).
Score = sigmoid(0.075) = 0.519.

Score0.35
Score20
Run 1

The code is moderately readable. The method has a clear purpose and generally follows a straightforward flow: populate bindings, evaluate, iterate results, transform values, and build a string. The structure is logical, and the action granularity is mostly reasonable, with each line performing a single operation. However, readability is hampered by several issues. Nesting is shallow but there are repeated null/empty checks and nested conditionals that create slightly tangled logic. The use of mutable shared state (_scratchBindings, _strBuf) obscures intent and makes the method less self-contained. Variable names like 'v', 'sep', and 'expr' are somewhat terse. The mixed formatting and lack of whitespace between logical blocks reduce natural reading flow. Additionally, the signature contains many parameters, and the exception type is vague. Overall, the code is understandable but would benefit from clearer naming, reduced shared mutable state, and better separation of transformation logic.

Run 2

The method has a clear purpose and is reasonably structured. It uses a flat control flow with only basic while/if nesting, and each action is mostly one per line. However, readability suffers from several issues: unclear variable names (v, sep, _scratchBindings, _strBuf), hidden state via mutable class fields, and external static calls that obscure intent. The null/empty-string checks are repetitive and mixed with type conversions, making the logic harder to follow. Some conditions could be extracted or simplified. Overall the code is understandable but not highly polished.

Run 3

The method has a clear overall purpose and relatively flat nesting, which aids readability. However, several issues reduce clarity: it directly manipulates shared mutable state (_scratchBindings, _strBuf), relies on side effects, and has multiple assignments within conditional blocks. The repeated null/empty checks are verbose and could be extracted into helper methods. Variable names like 'v' and 'sep' are terse, and the action granularity is mixed—some lines perform multiple logical steps. The flow is mostly linear, but the repeated facade calls and nested conditionals make it harder to follow. Overall, readable but could be significantly improved by reducing side effects, extracting helper methods, and using more descriptive names.

Run 1

Code Structure: The method follows a logical sequence: bind context, evaluate, normalize values, and build the result. Nesting: The loop contains several conditional blocks, but nesting remains manageable. Clarity of intent: The method name and operations communicate its purpose, although terse names such as v and raw collection types reduce clarity. Code length: It is reasonably concise, with some repetition in facade calls and empty-string checks. Action granularity: Each statement generally performs one action, making individual steps easy to follow. Reading flow: Execution proceeds naturally, but inconsistent signature indentation and the two independent type checks create minor friction. Separator handling depends on remaining iterator elements rather than remaining nonempty output values, making the intended formatting behavior less obvious.

Run 2

Code Structure: The method follows a logical sequence: bind context, evaluate, normalize values, and assemble a string. Nesting: Moderate nesting within the loop is manageable, though nested fallback and separator checks add complexity. Clarity of intent: The overall purpose is clear, but abbreviated names such as v and _strBuf, raw collection types, and shared mutable state reduce clarity. Code length: Compact and mostly appropriate, with some repetitive facade calls and empty-string checks. Action granularity: Each statement generally performs one action, making individual steps easy to follow. Reading flow: Mostly natural, but inconsistent signature indentation and sequential type checks on a reassigned value require extra attention. Separator insertion depends on remaining iterator elements rather than remaining nonempty values, making output behavior less intuitive.

Run 3

Code Structure: Logical progression from evaluation through value normalization to string assembly, although shared mutable fields obscure dependencies. Nesting: Moderate nesting within the loop is manageable but adds reading effort. Clarity of intent: The method clearly converts evaluated values into separated text, with sensible fallbacks; terse names, raw collection types, and repeated facade calls reduce clarity. Code length: Compact and mostly necessary, though normalization could be extracted for readability. Action granularity: Each statement performs a distinct action, making operations easy to follow. Reading flow: Generally natural, but inconsistent signature indentation and separator handling complicate interpretation: separators depend on remaining iterator elements rather than remaining nonempty values.