Sample

Dorn/python/65

Human rating uses the original dataset scale.

DatasetDorn
Human3.49
Lines50

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
8.9Δ 54.3
Scalabrino0.0270–1; higher is more readable
1.2Δ 62.1
Dorn0.2870–1; higher is more readable
22.6Δ 40.7
Mi0.5610–1; higher is more readable
59.3Δ 3.9
LLOC38Logical lines; fewer is more readable
2.9Δ 60.3
DeepSeek V4 Pro90–20; mean of three runs
34.7Δ 28.6
GPT-6.1 Sol150–20; mean of three runs
52.8Δ 10.4
BTTF0.4650–1; higher is more readable
35.9Δ 27.3
Human3.491–5; original rating
63.2

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.2465.762−81.37
Source linesThe number of non-empty source lines.50+20
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.924−7.385

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

Score0.027

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.51−0.769
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.43−0.566
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.84+0.551
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.49.871+0.287
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.085+0.111
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.83.98+0.108

Intercept 0.07 + feature contributions = -0.91 (log-odds).
Score = sigmoid(-0.91) = 0.287.

Score0.561
Score38
Run 1

The code has some logical structure (step comments) but suffers from readability issues. The function uses mutable default arguments, which is a bad practice. Variables are weakly named (e.g., 'fix', 'exe', 'pat'), and the code mixes concerns such as finding executables, moving libraries, and copying aspell dictionaries. The for loops and conditionals create moderate nesting. Action granularity is inconsistent; some lines do multiple things like printing and assigning. The reading flow is disrupted by hardcoded paths and the inline hack for aspell. While not entirely unreadable, it would benefit from better naming, separation of concerns, and removal of the Python 2 print statements and mutable defaults. Overall clarity is low; a reader must mentally unravel dependencies and side effects.

Run 2

The code has a generally logical structure and uses comments to mark distinct steps, but it suffers from significant readability issues. The function signature uses mutable default arguments, and variables are named inconsistently (e.g., 'fixes' as a dict, 'fix' as a key). The code mixes concerns: file operations, logic checks, and logging happen in the same loops. Nesting is moderate but increases due to conditional blocks and inline comments. Clarity of intent is reduced by the hard-coded path for aspell and reliance on external functions without context. The code is moderately long for the task and could be broken into smaller helper functions. Action granularity is inconsistent, with some lines doing multiple things. Reading flow is interrupted by print statements and commented step numbers. Overall, the code is understandable but not highly readable.

Run 3

The code has some organizational strengths, such as step-by-step comments and function decomposition through helper methods, but suffers from readability issues. The structure is logical but the steps are unevenly detailed (e.g., step 3.5 is very specific and verbose). Nesting is moderate, but the loop in step 3 contains an `else` that deletes from a dictionary while iterating, which is unclear. Intent is generally clear from comments, but variable names like `fix`, `k`, and `pat` are ambiguous. Code length is reasonable but includes inline hard-coded paths and print statements that reduce clarity. Action granularity is inconsistent — some lines perform multiple actions (e.g., `executables.extend(fix.moveLibrary(...))`). Reading flow is disrupted by the abrupt step numbering (3 then 3.5) and platform-specific hacks. Overall, the code is functional but not highly readable.

Run 1

Code Structure: Numbered steps provide logical organization, though executable discovery, library copying, dictionary handling, and logging are combined in one function. Nesting: Mostly shallow, with modest additional nesting in the aspell section. Clarity of intent: The docstring, comments, and descriptive names explain the overall purpose; abbreviated names such as k, fix, pat, and e are less informative, and the hard-coded aspell workaround interrupts the main logic. Code length: Reasonably concise, although extracting dictionary copying and logging into helpers would improve focus. Action granularity: Each line generally performs one action, making individual operations easy to follow. Reading flow: The sequential workflow is natural and well signposted, but step 3.5, inconsistent spacing, and mixed naming styles reduce polish.

Run 2

Code Structure: Numbered steps organize a logical workflow, but dependency handling, copying, patching, and logging are combined in one function; the aspell workaround interrupts cohesion. Nesting: Mostly shallow, with modest additional nesting in the dictionary-copy section. Clarity of intent: The docstring and step comments explain the purpose well, although abbreviated names such as pat, k, and stripFW reduce clarity. Code length: Reasonably concise, but directory creation and logging patterns repeat and could be extracted into helpers. Action granularity: Generally one action per line, making operations easy to follow. Reading flow: The sequence from discovering executables to fixing links and writing logs is natural, though inconsistent naming, legacy syntax, and the inserted step 3.5 create friction.

Run 3

Code Structure: Numbered stages organize the workflow logically, though library handling, dictionary copying, and logging share one function. Nesting: Mostly shallow, with modest additional nesting in the aspell section. Clarity of intent: The docstring and comments explain the purpose, but abbreviated names such as pat, k, and stripFW reduce clarity. Code length: Reasonably concise, although repeated directory creation and logging could be extracted into helpers. Action granularity: Statements generally perform one action per line. Reading flow: The sequence from executable discovery through dependency processing to logging is natural; the hard-coded aspell workaround interrupts that flow. Mutable default arguments and deletion from fixes during iteration make behavior less straightforward to reason about.