Sample
Scalabrio43
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 36.2Δ 24.4 |
| Scalabrino | 0.207 | 0–1; higher is more readable | 16.1Δ 4.3 |
| Dorn | 0.616 | 0–1; higher is more readable | 68.3Δ 56.5 |
| Mi | 0.392 | 0–1; higher is more readable | 66.8Δ 55.0 |
| LLOC | 15 | Logical lines; fewer is more readable | 44.5Δ 32.7 |
| DeepSeek V4 Pro | 10.67 | 0–20; mean of three runs | 23.4Δ 11.6 |
| GPT-6.1 Sol | 14 | 0–20; mean of three runs | 9.5Δ 2.3 |
| BTTF | 0.522 | 0–1; higher is more readable | 46.2Δ 34.4 |
| Human | 2.89 | 1–5; original rating | 11.8 |
Views
Select the downloaded ZIP or its extracted folder. Files stay in your browser.
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (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.
| Score | 0.207 |
|---|
Feature contributions
| Feature | Value | Contribution (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.
| Score | 0.392 |
|---|
| Score | 15 |
|---|
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.