Sample
Schnappinger/aoi/artofillusion.keystroke.KeystrokePreferencesPanel
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 23.1Δ 14.2 |
| Scalabrino | 0.682 | 0–1; higher is more readable | 33.9Δ 3.4 |
| Dorn | 0.026 | 0–1; higher is more readable | 24.8Δ 12.5 |
| Mi | 0.563 | 0–1; higher is more readable | 47.2Δ 9.9 |
| LLOC | 102 | Logical lines; fewer is more readable | 24.6Δ 12.7 |
| DeepSeek V4 Pro | 16.67 | 0–20; mean of three runs | 59.9Δ 22.6 |
| GPT-6.1 Sol | 16 | 0–20; mean of three runs | 38.9Δ 1.7 |
| BTTF | 0.22 | 0–1; higher is more readable | 13.2Δ 24.1 |
| Human | 3.31 | 1–4; original rating | 37.3 |
Views
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. | 8619.852 | −284.455 |
| Source linesThe number of non-empty source lines. | 229 | +91.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.882 | −7.323 |
Intercept 8.87 + feature contributions = -191.309 (log-odds).
Score = sigmoid(-191.309) = 0.
| Score | 0.682 |
|---|
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. | 229 | −7.072 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 200 | +6.181 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 201 | −4.191 |
| 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. | 160.991 | −3.154 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 228.877 | +2.789 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 160.996 | +1.793 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.103 | −0.057 |
Intercept 0.07 + feature contributions = -3.64 (log-odds).
Score = sigmoid(-3.64) = 0.026.
| Score | 0.563 |
|---|
| Score | 102 |
|---|
Run 1
The code is well-structured and highly readable. It follows clear separation of concerns with distinct methods for actions, good use of Javadoc, and consistent naming conventions. The class is organized logically, with UI construction separated from event handlers and data management. Nesting is minimal, with early returns reducing complexity. Action granularity is mostly one action per line, particularly in the method bodies. The code length is appropriate for the functionality, though some methods like the constructor are slightly long. The anonymous inner class for table header clicks is slightly less readable but still acceptable. The table model inline class is cleanly separated. The sorting logic uses comparators effectively. Overall, the code demonstrates strong readability with clear intent, natural flow, and good practices.
Run 2
The code is well-structured and highly readable. It follows a logical class organization with clear method separation and descriptive Javadoc comments. The constructor initializes UI components in a straightforward sequence, though the anonymous inner class for table header clicks adds slight nesting. Methods are concise and focused on single responsibilities, with early returns reducing indentation. Naming is clear and intent is evident throughout. The table model inner class is neatly separated and minimal. One minor concern: the addRecord method uses multiple operations per line when creating and editing the record, but overall the code maintains excellent readability with proper spacing, consistent formatting, and clear action granularity.
Run 3
The code is generally well-structured and readable. It has a clear purpose, logical organization, and good method naming that reflects intent. The class is relatively flat with minimal deep nesting, and each method performs a focused action. However, there are some areas that could be improved: the constructor is somewhat long and does multiple setup tasks at once, action granularity could be better in places (e.g., multiple operations in single lines), and some anonymous inner classes add slight complexity. Variable naming is clear, and Javadoc comments help explain purpose. Overall, an experienced Java developer would find this code understandable, though it could benefit from slightly better separation of UI setup logic.
Run 1
Code Structure: Responsibilities are organized into focused methods, with a separate inner table model; the constructor mixes UI setup and event wiring. Nesting: Mostly shallow, with early returns keeping handlers flat; anonymous event handlers and comparators introduce modest nesting. Clarity of intent: Descriptive method names and comments explain the purpose, though numeric column identifiers, string-based event links, and the inaccurate sorting comment reduce clarity. Code length: Generally concise, but redundant casts, repetitive documentation, and verbose initialization add noise. Action granularity: Most lines perform one action, although button creation combines assignment with insertion, and some dialog expressions pack several operations together. Reading flow: Consistent formatting and a natural progression from initialization through actions to helper methods make the class easy to follow. Long lines, wildcard imports, and occasional omitted braces slightly hinder scanning.
Run 2
Code Structure: Well organized into focused event handlers, persistence, sorting, and an inner table model, though the constructor combines substantial UI setup and event wiring. Nesting: Mostly shallow, with early returns keeping handlers flat; anonymous classes add some complexity. Clarity of intent: Descriptive method names and comments explain responsibilities, but numeric column identifiers, string-based event links, and a sorting comment that mentions only names reduce precision. Code length: Generally concise, although repetitive documentation, redundant casts, and verbose anonymous classes add clutter. Action granularity: Most lines perform one action, but button creation combines assignment and insertion, and several dialog/layout expressions are dense. Reading flow: Consistent formatting and logical method ordering make the class easy to follow; long statements and inline callbacks occasionally interrupt the flow.
Run 3
Code Structure: Well-organized into focused event handlers, persistence logic, sorting, and an inner table model, though the constructor mixes initialization, layout, and event wiring. Nesting: Mostly shallow, with early returns keeping handlers flat; anonymous callbacks and the sorting comparator add moderate nesting. Clarity of intent: Descriptive method names and comments explain most operations, but numeric column identifiers, string-based event links, and a sorting comment that mentions only names reduce clarity. Code length: Generally concise, although repetitive editor handling, redundant casts, and boilerplate add some noise. Action granularity: Most lines perform one action, but button creation combines assignment and insertion, and several long expressions combine multiple operations. Reading flow: Methods follow a natural setup-to-interaction-to-model progression with consistent formatting; long constructor and dialog expressions slightly interrupt scanning.