Sample

MBJP/21

Human rating uses the original dataset scale.

DatasetMBJP
Human2.5
Lines28

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett0.0230–1; higher is more readable
62.5Δ 34.4
Scalabrino0.8120–1; higher is more readable
62.5Δ 34.4
Dorn0.790–1; higher is more readable
87.5Δ 59.4
Mi0.6920–1; higher is more readable
56.2Δ 28.1
LLOC9Logical lines; fewer is more readable
46.9Δ 18.8
DeepSeek V4 Pro10.670–20; mean of three runs
25.0Δ 3.1
GPT-6.1 Sol14.670–20; mean of three runs
31.2Δ 3.1
BTTF0.3420–1; higher is more readable
12.5Δ 15.6
Human2.51–5; original rating
28.1

Views

Source code

import java.io.*; import java.lang.*; import java.util.*; import java.math.*; class MultiplesOfNum { /** * * Write a function to find m number of multiples of n. * * > multiplesOfNum(4, 3) * [3, 6, 9, 12] * > multiplesOfNum(2, 5) * [5, 10] * > multiplesOfNum(9, 2) * [2, 4, 6, 8, 10, 12, 14, 16, 18] */ public static List<Integer> multiplesOfNum(int m, int n) { List<Integer> qwe = new ArrayList<>(); int uio = 0; int zxz = 1; while (zxz <= m) { uio = n * zxz; qwe.add(uio); zxz++; } return qwe; } }

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.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.

Score0.812

Feature contributions

FeatureValueContribution
(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.

Score0.692
Score9
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.