Sample

Scalabrio43

Human rating uses the original dataset scale.

DatasetScalabrino
Human2.89
Lines34

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
36.2Δ 24.4
Scalabrino0.2070–1; higher is more readable
16.1Δ 4.3
Dorn0.6160–1; higher is more readable
68.3Δ 56.5
Mi0.3920–1; higher is more readable
66.8Δ 55.0
LLOC15Logical lines; fewer is more readable
44.5Δ 32.7
DeepSeek V4 Pro10.670–20; mean of three runs
23.4Δ 11.6
GPT-6.1 Sol140–20; mean of three runs
9.5Δ 2.3
BTTF0.5220–1; higher is more readable
46.2Δ 34.4
Human2.891–5; original rating
11.8

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.1088.793−35.93
Source linesThe number of non-empty source lines.34+13.6
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.277−6.415

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

Score0.207

Feature contributions

FeatureValueContribution
(log-odds)
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 (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.79.912+0.28
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.078+0.186
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.32.642+0.046

Intercept 0.07 + feature contributions = 0.475 (log-odds).
Score = sigmoid(0.475) = 0.616.

Score0.392
Score15
Run 1

The code has a logical structure but relies on repetitive nested conditionals. While the intent is somewhat clear — routing events to type-specific handlers — the deep nesting and duplicated listener checks reduce readability. Event type comparisons and listener type checks are repeated, increasing length and making the logic harder to scan. Each branch performs a single action per inner block, which is good, but the overall flow feels disorganized due to the multiple conditionals and mixed indentation. Extracting helper methods or using polymorphism would improve clarity and reduce nesting.

Run 2

The code has a logical structure and clear intent, but suffers from excessive nesting and repetition. The method is split into if/else branches, but each branch contains multiple nested conditionals checking event type ranges and listener types. This creates deep indentation (up to 4 levels) and makes the flow harder to follow. The repeated pattern of 'check event type, check listener instance, dispatch event' could be refactored into helper methods or a more declarative approach. Action granularity is reasonable—each call is on its own line—but the duplicated listener checks add length. The reading flow is disrupted by the need to mentally track which branch handles which event category. Overall, while the code is functional and not completely unreadable, the nested structure and repetition significantly reduce its clarity.

Run 3

The code has a logical structure but suffers from deep nesting (up to 4 levels) and repetitive type-checking patterns. The intent is fairly clear—dispatching events to appropriate listeners—but the implementation obscures it with multiple nested conditionals. Action granularity is mostly one action per line, but the flow is interrupted by frequent type casts and range checks. The duplicated `handleFire...Event` calls and repeated `instanceof` checks make it longer than necessary. A cleaner approach would use early returns, helper methods, or a dispatch table to reduce nesting and improve readability.

Run 1

Code Structure: Dispatch is logically grouped by event category, but repeated range checks and listener checks create duplication. Nesting: Up to three conditional levels make the main dispatch path harder to scan. Clarity of intent: Descriptive handler names and event constants clearly communicate event routing, although ANY_EVENT handling omits generators, making its scope less obvious. Code length: Reasonably short, but repeated getEventType() calls and similar dispatch blocks add avoidable verbosity. Action granularity: Each statement performs one action; wrapped handler calls remain understandable. Reading flow: The top-to-bottom category checks are predictable, but inconsistent indentation and repeated conditionals interrupt scanning.

Run 2

Code Structure: Logically separates wildcard events from category-specific dispatch, but repeats listener checks and handler calls. Nesting: Up to three conditional levels make dispatch harder to scan than a flatter design. Clarity of intent: Descriptive event constants, listener types, and handler names convey the purpose; wildcard handling of only module and notation listeners is not explained. Code length: Reasonably short, though repeated getEventType() calls and dispatch patterns add avoidable verbosity. Action granularity: Each statement performs a single check or dispatch, with multiline calls remaining understandable. Reading flow: Categories follow a consistent pattern, but uneven continuation indentation and repeated conditions interrupt an otherwise straightforward flow.

Run 3

Code Structure: Event dispatch is logically grouped by event category, but repeated checks and handler calls add duplication. Nesting: Up to three conditional levels make the method harder to scan than a flatter dispatch structure. Clarity of intent: Descriptive handler names and event constants clearly communicate routing, though the ANY_EVENT branch handling only module and notation listeners raises questions. Code length: Reasonably short, but repeated getEventType() calls and similar blocks introduce avoidable verbosity. Action granularity: Each statement performs one action; multiline conditions and calls remain understandable. Reading flow: The progression from general to category-specific events is natural, but inconsistent continuation indentation and repeated casts interrupt visual consistency.