Sample
MBJP/21
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.023 | 0–1; higher is more readable | 62.5Δ 34.4 |
| Scalabrino | 0.812 | 0–1; higher is more readable | 62.5Δ 34.4 |
| Dorn | 0.79 | 0–1; higher is more readable | 87.5Δ 59.4 |
| Mi | 0.692 | 0–1; higher is more readable | 56.2Δ 28.1 |
| LLOC | 9 | Logical lines; fewer is more readable | 46.9Δ 18.8 |
| DeepSeek V4 Pro | 10.67 | 0–20; mean of three runs | 25.0Δ 3.1 |
| GPT-6.1 Sol | 14.67 | 0–20; mean of three runs | 31.2Δ 3.1 |
| BTTF | 0.342 | 0–1; higher is more readable | 12.5Δ 15.6 |
| Human | 2.5 | 1–5; original rating | 28.1 |
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. | 517.969 | −17.093 |
| Source linesThe number of non-empty source lines. | 28 | +11.2 |
| 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.484 | −6.726 |
Intercept 8.87 + feature contributions = -3.749 (log-odds).
Score = sigmoid(-3.749) = 0.023.
| Score | 0.812 |
|---|
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. | 61.964 | +1.041 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 61.964 | +0.195 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.087 | +0.1 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 19 | −0.08 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 28 | +0.045 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 26.937 | −0.033 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 19 | −0.015 |
Intercept 0.07 + feature contributions = 1.322 (log-odds).
Score = sigmoid(1.322) = 0.79.
| Score | 0.692 |
|---|
| Score | 9 |
|---|
Run 1
The code is functional but has several readability issues. Variable names like 'qwe', 'uio', and 'zxz' are meaningless and obscure the purpose of the logic. The method itself is simple, but the internal variable naming makes it harder to follow than necessary. While the code structure is flat and not deeply nested, the lack of clear naming reduces clarity of intent. The action granularity is acceptable, but the reading flow suffers due to poor variable names. The method could be simplified to a cleaner loop that directly adds multiples to the list without unnecessary intermediate variables. Correctly named variables such as 'result' and 'multiplier' would significantly improve readability.
Run 2
The code structure is logical and flat, with a single while loop and clear flow. However, variable names like 'qwe', 'uio', and 'zxz' severely hurt clarity of intent, making the purpose ambiguous despite the docstring. Action granularity is acceptable, and length is concise, but the poor naming disrupts reading flow and comprehension. The unused imports also add clutter.
Run 3
The code is functionally correct but readability suffers from poor variable naming and unnecessary imports. The variable names 'qwe', 'uio', and 'zxz' convey no meaning, making the code harder to understand at a glance. The logic is straightforward and flat, with a simple while loop and one action per line, which is positive. However, the structure is slightly cluttered by unused imports (java.io, java.lang, java.math) that could confuse readers about the code's actual dependencies. The method name and Javadoc examples clearly communicate intent, but the implementation could be more expressive. Overall, the code is understandable but would benefit from meaningful variable names, removal of unused imports, and a more concise approach (e.g., a for loop or stream) to improve clarity and flow.
Run 1
Code Structure: A single, focused method is logically organized, though broad and unused imports add clutter. Nesting: One shallow loop makes control flow easy to follow. Clarity of intent: The method name, documentation, and examples clearly explain the purpose, but meaningless variable names (qwe, uio, zxz) obscure their roles. Code length: The implementation is short, although the temporary variable and its initialization are unnecessary. Action granularity: Each statement performs one action on its own line. Reading flow: Initialization, iteration, and return follow a natural sequence, but descriptive names and a for loop would make the progression clearer.
Run 2
Code Structure: A single focused method is logically organized, though broad, unused imports add clutter. Nesting: Only one loop, making control flow easy to follow. Clarity of intent: The method name and documented examples clearly describe the goal, but meaningless variable names (qwe, uio, zxz) obscure their roles. Code length: Short overall, although the temporary variable uio and its initial assignment are unnecessary. Action granularity: Each statement performs one action on its own line. Reading flow: Initialization, iteration, and return follow a natural sequence, but cryptic identifiers interrupt comprehension.
Run 3
Code Structure: A single, logically organized method separates initialization, iteration, and return. Nesting: Only one loop, with no deeply nested logic. Clarity of intent: The method name, documentation, and examples clearly describe the purpose, but meaningless variable names (qwe, uio, zxz) obscure the result list, current multiple, and counter. Code length: The implementation is short, though the temporary variable and unused wildcard imports add unnecessary clutter. Action granularity: Each statement performs one action on its own line. Reading flow: The sequence is natural and easy to follow, but descriptive variable names and a conventional for loop would make it more immediately understandable.