Sample

Scalabrio117

Human rating uses the original dataset scale.

DatasetScalabrino
Human3.56
Lines38

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
18.1Δ 27.4
Scalabrino0.4820–1; higher is more readable
46.7Δ 1.3
Dorn0.0160–1; higher is more readable
4.0Δ 41.5
Mi0.4360–1; higher is more readable
70.9Δ 25.4
LLOC17Logical lines; fewer is more readable
35.7Δ 9.8
DeepSeek V4 Pro9.330–20; mean of three runs
15.6Δ 29.9
GPT-6.1 Sol130–20; mean of three runs
5.0Δ 40.5
BTTF0.6130–1; higher is more readable
74.4Δ 28.9
Human3.561–5; original rating
45.5

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.1443.271−47.628
Source linesThe number of non-empty source lines.38+15.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.5.062−7.593

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

Score0.482

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.126−1.672
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.38−0.451
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.133−0.346
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.38−0.309
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.36.819+0.105

Intercept 0.07 + feature contributions = -4.11 (log-odds).
Score = sigmoid(-4.11) = 0.016.

Score0.436
Score17
Run 1

This code is difficult to read due to several issues. The structure is functional but generated-looking, with excessive blank lines and a redundant outer block that creates unnecessary nesting. Intent is clear only to someone familiar with parser generators; otherwise, the method name and logic are obscure. Variable declarations are crammed onto one line, reducing clarity. The switch statement has multiple case labels per line, which hurts readability, and the action of calling matchRange is repeated across blocks. The default case contains a long exception constructor on a single line, making it hard to parse. The code length is acceptable but could be more concise. Reading flow is disorganized, with the outer braces and blank lines creating disjointed segments. Overall, it functions but requires mental overhead to follow.

Run 2

The code is a generated parser method with poor readability. While it has some logical structure (switch statement for hex digits), it suffers from multiple issues: unnecessary nesting with standalone braces, inconsistent formatting, and unclear variable naming (_ttype, _token, _begin). The switch statement is flat but verbose, listing every digit separately instead of using ranges more efficiently. The method name mHEX_DIGIT is cryptic without context. Action granularity is mixed—some lines contain multiple statements while others are unnecessarily split. The reading flow is disrupted by the redundant wrapper block and inconsistent indentation. The intent is partially clear (matching hex digits) but the generated code style makes it harder to follow than necessary. Token creation logic at the end adds complexity without clear separation of concerns.

Run 3

This appears to be auto-generated lexer/parser code, which explains some structural issues. The method has a clear single purpose but suffers from readability problems: the switch statement is unnecessarily wrapped in an empty block, there are multiple declarations on one line, and the default case contains a long exception constructor call. The case labels are compact but repetitive. Variable names like _ttype, _token, and _begin are cryptic without context. The method mixes levels of abstraction—character matching and token creation in one place. The action granularity is inconsistent, with some lines doing too much. The reading flow is interrupted by the block-wrapped switch. However, the logic is straightforward and the code is relatively flat, so it remains understandable with effort.

Run 1

Code Structure: The method logically separates character recognition from token creation, but redundant blocks add clutter. Nesting: Depth is moderate, with unnecessary braces around the switch and each branch. Clarity of intent: The method name and character ranges clearly convey hexadecimal-digit recognition; terse variables and an unused _saveIndex reduce clarity. Code length: Explicit case lists and token-management boilerplate make a simple operation verbose. Action granularity: Most operations occupy separate lines, but the initial declarations and grouped case labels pack multiple elements onto single lines. Reading flow: Recognition, error handling, and token creation follow a natural sequence, though inconsistent spacing and excessive braces interrupt scanning.

Run 2

Code Structure: Logically separates character matching from token creation, but redundant blocks and an unused _saveIndex declaration add clutter. Nesting: Moderately nested, with unnecessary braces around the switch and each case body. Clarity of intent: HEX_DIGIT and matchRange clearly communicate hexadecimal recognition, though abbreviated variables and lexer-specific APIs require context. Code length: Fairly short, but enumerating every character before matching ranges is verbose. Action granularity: Most executable statements occupy separate lines, but multiple declarations and case labels share lines. Reading flow: Matching digits, uppercase letters, and lowercase letters before creating a token is natural; inconsistent spacing, indentation, and redundant braces interrupt that flow.

Run 3

Code Structure: The method logically separates character matching from token creation, but redundant blocks and an unused _saveIndex add clutter. Nesting: Depth is moderate, though unnecessary braces around the switch and each case make it appear more nested. Clarity of intent: HEX_DIGIT and matchRange clearly convey hexadecimal recognition; abbreviated variables and lexer-specific conventions obscure token handling. Code length: Explicit character cases and boilerplate are verbose for a simple operation. Action granularity: Most operations occupy separate lines, but multiple declarations and case labels share lines, reducing scanability. Reading flow: Matching digits, uppercase letters, then lowercase letters is natural, followed by token construction; inconsistent spacing and indentation interrupt that flow.