Sample

Dorn/python/95

Human rating uses the original dataset scale.

DatasetDorn
Human3.11
Lines30

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
42.3Δ 5.3
Scalabrino0.4560–1; higher is more readable
36.4Δ 0.6
Dorn0.260–1; higher is more readable
21.2Δ 15.9
Mi0.1290–1; higher is more readable
13.6Δ 23.4
LLOC22Logical lines; fewer is more readable
26.7Δ 10.3
DeepSeek V4 Pro80–20; mean of three runs
29.4Δ 7.7
GPT-6.1 Sol160–20; mean of three runs
66.0Δ 29.0
BTTF0.5230–1; higher is more readable
51.3Δ 14.2
Human3.111–5; original rating
37.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.857.35−28.293
Source linesThe number of non-empty source lines.30+12
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.27−6.405

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

Score0.456

Feature contributions

FeatureValueContribution
(log-odds)
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
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.069+0.276
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.91.935−0.229
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.31−0.061
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.29.785+0.007

Intercept 0.07 + feature contributions = -1.047 (log-odds).
Score = sigmoid(-1.047) = 0.26.

Score0.129
Score22
Run 1

The code has some structure but suffers from readability issues. The method `filter` contains nested logic with set operations and a conditional that branches into two loops, making the intent harder to follow. Variable names are moderately descriptive, but the use of double-underscore name mangling and a static helper method obscure the design. The `eval(event.value())` call is a significant clarity and safety concern, as it obscures intent and introduces potential execution risk. Action granularity is mixed: some lines combine multiple operations with `&=`, `|=`, and inline loops, reducing clarity. Reading flow is disrupted by the disjointed helper method and the static method's purpose being unclear from its name alone. Overall, the code is readable in small sections but requires effort to understand its overall logic and maintainability.

Run 2

The code has a partially visible method signature, suggesting structural issues. It uses unclear naming (e.g., 'filter' method, 'observable', 'filteredCategories') and mixes set operations with domain logic. The `eval(event.value())` call is unsafe and ambiguous. Methods perform multiple actions (e.g., `__categorizablesBelongingToCategory` loops and mutates a set). Nesting is moderate but logic is tangled, making intent hard to follow. The code is concise but at the cost of clarity. Action granularity is mixed, with some lines doing multiple operations. Reading flow is disrupted by unclear responsibilities and missing context.

Run 3

The code has some organizational logic but suffers from readability issues. The class inheritance call is straightforward, yet the filter method uses cryptic private variables like __filterOnlyWhenAllCategoriesMatch and __categorizablesBelongingToCategory, making intent unclear. Nesting is moderate, but the logic branches and set operations are not immediately obvious. Action granularity is acceptable, but the for-loop with set union and intersection operations in __categorizablesBelongingToCategory mutates the loop's source collection, which is confusing and error-prone. The eval(event.value()) call in onFilterMatchingChanged is a significant red flag—it evaluates arbitrary code and obscures intent. Overall, variable names and private method usage hinder clarity, though the code is concise. Reading flow is disjointed due to non-descriptive names and unclear data flow.

Run 1

Code Structure: Filtering, category expansion, and event handling are separated into focused methods, although the opening constructor statement lacks context. Nesting: Shallow conditionals and loops keep complexity manageable. Clarity of intent: Descriptive names communicate intersection versus union filtering, but long identifiers, implicit set assumptions, and eval(event.value()) obscure some details. Code length: Compact without substantial repetition; the lengthy names slightly increase visual effort. Action granularity: Each line generally performs one clear operation. Reading flow: The early return and ordered filtering steps provide a natural progression, though the relationship between the input categorizables and self.observable() is not explained, and inconsistent whitespace mildly disrupts presentation.

Run 2

Code Structure: Methods separate filtering, category expansion, and event handling logically, though the opening initialization line lacks context. Nesting: Shallow conditional and loop nesting is easy to follow, with an early return simplifying the main path. Clarity of intent: Descriptive names and set intersection/union communicate all-match versus any-match behavior, but lengthy identifiers and eval(event.value()) obscure some details. Code length: Compact and largely necessary, with minor duplication between filtering branches. Action granularity: Each line generally performs one clear action. Reading flow: Progression from selecting categories to combining matches and restricting results is natural; inconsistent whitespace and the incomplete opening slightly interrupt readability.

Run 3

Code Structure: Methods separate filtering, category expansion, and event handling logically, though the opening superclass call lacks context. Nesting: Shallow conditionals and loops are easy to follow, with an early return reducing complexity. Clarity of intent: Descriptive names explain intersection versus union behavior, but long identifiers, implicit set requirements, and eval(event.value()) obscure some assumptions. Code length: Compact and mostly necessary, although the two filtering branches repeat similar iteration. Action granularity: Each line generally performs one operation. Reading flow: Filtering proceeds naturally from category selection to combination and observable restriction; inconsistent whitespace and the incomplete opening slightly disrupt presentation.