Sample
Scalabrio5
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.004 | 0–1; higher is more readable | 79.9Δ 6.5 |
| Scalabrino | 0.531 | 0–1; higher is more readable | 52.3Δ 21.1 |
| Dorn | 0.74 | 0–1; higher is more readable | 83.9Δ 10.6 |
| Mi | 0.439 | 0–1; higher is more readable | 71.9Δ 1.5 |
| LLOC | 8 | Logical lines; fewer is more readable | 76.9Δ 3.5 |
| DeepSeek V4 Pro | 14.67 | 0–20; mean of three runs | 57.8Δ 15.6 |
| GPT-6.1 Sol | 17 | 0–20; mean of three runs | 58.5Δ 14.8 |
| BTTF | 0.705 | 0–1; higher is more readable | 93.0Δ 19.6 |
| Human | 4 | 1–5; original rating | 73.4 |
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. | 564.221 | −18.619 |
| Source linesThe number of non-empty source lines. | 27 | +10.8 |
| 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.372 | −6.558 |
Intercept 8.87 + feature contributions = -5.507 (log-odds).
Score = sigmoid(-5.507) = 0.004.
| Score | 0.531 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 1 | −0.703 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 77.926 | +0.453 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.052 | +0.438 |
| 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. | 77.963 | +0.363 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 27 | +0.08 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 25.684 | −0.051 |
Intercept 0.07 + feature contributions = 1.049 (log-odds).
Score = sigmoid(1.049) = 0.74.
| Score | 0.439 |
|---|
| Score | 8 |
|---|
Run 1
The code is well-structured and highly readable. It follows a clear, consistent pattern: initialize a provider factory, create a notation, then register it for each notation type. Each action is on its own line, and the method calls are descriptive. The indentation is logical, though the commented-out code slightly interrupts flow. The inline comment is helpful, but the dead code comment should be removed. The long method signatures create some visual weight but are necessary for clarity. Overall, the code demonstrates clear intent, proper action granularity, and good organization with minimal nesting.
Run 2
The code is somewhat readable but has several issues. The method has a clear purpose (registering notation providers) and uses flat structure, but suffers from redundancy: five nearly identical calls could be simplified with a loop or map. The commented-out code and awkward alignment in the Notation.makeNotation call reduce clarity. Variable naming is acceptable, but the repetitive pattern makes the intent less obvious. The static initializer comment is misleading since this is a static method, not a static initializer block. Overall, the code is functional and fairly organized, but lacks conciseness and polished clarity.
Run 3
The code has clear intent and generally follows a flat structure with one action per line, which aids readability. The registration pattern is consistent and easy to follow. However, several issues detract from readability: commented-out code remains in the assignment statement, creating ambiguity about whether it should be removed or restored. The multi-line chained method call for Notation.makeNotation breaks the one-action-per-line principle and disrupts reading flow. The Javadoc comment is minimal and could better explain the purpose of registering notations. Overall, the code is understandable but needs cleanup to improve clarity and maintain a natural reading flow.
Run 1
Code Structure: Initialization logically precedes a consistent sequence of provider registrations. Nesting: The method is flat, with no conditional or loop nesting. Clarity of intent: The comment, constants, and class names clearly convey registration of Java notation providers, although 'npf' and 'name' are generic and the commented-out call adds distraction. Code length: Short and appropriately explicit; repeated registration calls are justified by distinct provider types. Action granularity: Each statement performs one main action, with line wrapping keeping long calls readable. Reading flow: The top-to-bottom progression is natural and formatting is consistent overall, though the inline obsolete comment and unusual assignment indentation slightly interrupt it.
Run 2
Code Structure: Logically organized into factory retrieval, notation creation, and provider registration. Nesting: Flat, with no nested control flow. Clarity of intent: Descriptive method and class names make the registration purpose clear, although 'npf' is abbreviated and the commented-out expression introduces distracting obsolete code. Code length: Short overall; repetitive registrations are straightforward rather than unnecessarily verbose. Action granularity: Each statement performs one clear action, with multiline calls improving legibility. Reading flow: Natural top-to-bottom progression and consistent registration formatting make the code easy to scan. Minor drawbacks include awkward formatting around notation creation and the misleading 'static initializer' comment, since this is a static method rather than a static initializer block.
Run 3
Code Structure: Initialization followed by related provider registrations is logically organized. Nesting: The method is flat, with no nested control flow. Clarity of intent: Descriptive API names and provider classes make the registration purpose clear, though 'npf' is abbreviated and the commented-out alternative adds distraction. Code length: The method is reasonably concise; repeated registration calls are explicit and easy to compare. Action granularity: Each statement performs one primary action, with multiline formatting keeping arguments readable. Reading flow: Execution proceeds naturally from obtaining the factory to creating the notation and registering providers. Minor drawbacks include the awkward inline comment, uneven indentation around notation creation, and the misleading 'static initializer' description for a static method.