Sample
Dorn/java/106
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 13.1Δ 12.8 |
| Scalabrino | 0.532 | 0–1; higher is more readable | 48.4Δ 22.5 |
| Dorn | 0.048 | 0–1; higher is more readable | 5.3Δ 20.6 |
| Mi | 0.001 | 0–1; higher is more readable | 0.8Δ 25.1 |
| LLOC | 33 | Logical lines; fewer is more readable | 6.7Δ 19.2 |
| DeepSeek V4 Pro | 5.67 | 0–20; mean of three runs | 13.9Δ 12.0 |
| GPT-6.1 Sol | 13.67 | 0–20; mean of three runs | 37.7Δ 11.8 |
| BTTF | 0.367 | 0–1; higher is more readable | 20.9Δ 5.0 |
| Human | 2.94 | 1–5; original rating | 25.9 |
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. | 2078.92 | −68.604 |
| 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.929 | −7.394 |
Intercept 8.87 + feature contributions = -47.128 (log-odds).
Score = sigmoid(-47.128) = 0.
| Score | 0.532 |
|---|
Feature contributions
| Feature | Value | Contribution (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. | 220.961 | −5.694 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 221 | +2.761 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 48 | +0.923 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 51 | −0.769 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 48 | −0.681 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 49.851 | +0.287 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.085 | +0.111 |
Intercept 0.07 + feature contributions = -2.991 (log-odds).
Score = sigmoid(-2.991) = 0.048.
| Score | 0.001 |
|---|
| Score | 33 |
|---|
Run 1
The code is poorly readable due to several issues. Structure is tangled: raw types are used, variables are named vaguely (e.g., 'lp', 'dm', 'am'), and there is no clear separation between setup logic. Nesting is moderate but the listener callback contains an if-statement and a loop, adding complexity. Intent is ambiguous because comments are sparse and do not explain the 'disable_on_install' pattern clearly. Code length is verbose for what it does, with repetitive parameter_group.add calls. Action granularity is mixed—some lines perform multiple steps (e.g., creating and adding parameters), while others are single actions. Reading flow is disrupted by random blank lines, inconsistent indentation, and a lack of logical grouping. The method name suggests a specific purpose but the implementation mixes UI creation, state management, and listener setup without abstraction. Overall, the code is hard to follow and maintain.
Run 2
The code has moderate structure with clear sectioning and some logical organization, but it suffers from several readability issues. The method is long and attempts too many tasks: creating the model, configuring parameters, managing state, and setting up listeners. Nesting is relatively flat, which is positive, but clarity of intent is hindered by unclear variable names like 'dm', 'am', 'lp', and 'parameter_group'. Action granularity is inconsistent—some lines perform multiple operations while others have excessive whitespace. The use of raw types (ArrayList without generics) adds ambiguity. The reading flow is disrupted by the inline listener definition with its own logic. Magic strings and abbreviated naming conventions reduce clarity for maintainers unfamiliar with the codebase. While the code is functional, it could benefit from extraction into smaller methods with clearer naming and consistent formatting.
Run 3
The code exhibits several readability issues. The method name is overly long, and the logic is tangled with multiple responsibilities: creating the model, setting up parameters, managing a listener, and grouping items. Nesting is not deeply problematic, but the action granularity is inconsistent — some lines contain multiple conceptual actions (e.g., adding a parameter and immediately adding it to a list). The reading flow is disrupted by scattered comments, unclear variable names like 'dm', 'am', 'lp', and the reuse of 'parameter_group' across different groups. The listener uses a raw loop where a for-each would be clearer. The method returns a model but also mutates state via the listener, making intent less clear. Overall, the code is functional but cluttered, requiring careful reading to understand the configuration setup flow.
Run 1
Code Structure: Configuration setup follows a logical sequence, but repeated parameter-list manipulation and an inline listener make the method somewhat cluttered. Nesting: Most code is flat; the anonymous listener introduces moderate nesting through a conditional and loop. Clarity of intent: API names and comments explain the installation workflow, but abbreviations such as lp, dm, am, and jpi obscure meaning, and raw collections require casts. Code length: Reasonably concise, though repetitive setup could be extracted into helpers; the long method signature and API calls hinder scanning. Action granularity: Most lines perform one action, making state changes easy to identify. Reading flow: Setup proceeds naturally from controls to grouping and listener registration, but inconsistent spacing, excessive blank lines, and the fragment's incomplete beginning and ending interrupt readability.
Run 2
Code Structure: Configuration setup follows logical stages, and the installation listener is separated, but reusing parameter_group makes group boundaries less obvious. Nesting: Most code is flat; the anonymous listener introduces moderate nesting through a conditional and loop. Clarity of intent: API calls and comments explain the purpose, but abbreviations such as lp, dm, am, and jpi obscure meaning, and raw collections require casts. Code length: Reasonably concise, although repetitive parameter registration and excess blank lines add visual bulk. Action granularity: Statements generally perform one action per line, making individual operations easy to follow. Reading flow: Setup progresses naturally from model creation to controls and listener registration, but inconsistent spacing, long lines, and the fragment's incomplete method boundaries interrupt readability.
Run 3
Code Structure: Configuration setup follows logical phases, with grouping helpers and a separate installation listener, though the fragment starts and ends mid-method. Nesting: Most code is flat; the anonymous listener introduces moderate nesting through a conditional and loop. Clarity of intent: API calls, resource keys, and comments communicate the purpose, but abbreviated names such as lp, dm, am, and jpi obscure roles. Raw collections and unclear parameter_group reuse add uncertainty. Code length: Generally reasonable, although repetitive parameter registration and a long method signature make scanning harder. Action granularity: Statements mostly perform one action per line, supporting readability. Reading flow: Setup proceeds naturally from model creation to controls and listener registration, but inconsistent spacing, excessive blank lines, and the truncated context interrupt the flow.