Sample

JetBrains/e5

Human rating uses the original dataset scale.

DatasetJetBrains
Human0.95
Lines13

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett0.0010–1; higher is more readable
72.0Δ 19.5
Scalabrino0.7590–1; higher is more readable
65.3Δ 26.3
Dorn0.6570–1; higher is more readable
78.8Δ 12.7
Mi0.5160–1; higher is more readable
57.6Δ 33.9
LLOC9Logical lines; fewer is more readable
79.2Δ 12.3
DeepSeek V4 Pro17.330–20; mean of three runs
78.8Δ 12.7
GPT-6.1 Sol180–20; mean of three runs
77.5Δ 14.0
BTTF0.4760–1; higher is more readable
59.3Δ 32.2
Human0.950–1; original rating
91.5

Views

Source code

public class Divisors { public static void main(String[] args) { for (int i = 1; i <= 100; i++) { System.out.print("Divisors of " + i + ": "); for (int j = 1; j <= i; j++) { if (i % j == 0) { System.out.print(j + " "); } } System.out.println(); } } }

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.474.06−15.644
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.3.606−5.409
Source linesThe number of non-empty source lines.13+5.2

Intercept 8.87 + feature contributions = -6.983 (log-odds).
Score = sigmoid(-6.983) = 0.001.

Score0.759

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.56.923+1.254
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.1+1.001
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.144−0.461
Indentation frequencyHow rapidly indentation changes from line to line.13−0.287
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.11.655−0.247
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.13+0.123

Intercept 0.07 + feature contributions = 0.648 (log-odds).
Score = sigmoid(0.648) = 0.657.

Score0.516
Score9
Run 1

The code is highly readable. It has a clear logical structure: an outer loop for numbers 1–100 and an inner loop for finding divisors. Nesting is only two levels deep, keeping it flat. The intent is obvious—compute and print divisors. The code is concise, with no unnecessary lines, and each statement is simple and likely one action per line. Reading flow is natural, from setting up the loop to printing results. Minor deductions could be argued for lacking method extraction or explanatory comments, but for a simple task it's effectively self-documenting.

Run 2

The code is highly readable. It has a clear, logical structure: an outer loop from 1 to 100, an inner loop to find divisors, and consistent output formatting. Nesting is minimal—only two levels, which is appropriate. Intent is straightforward: print divisors for each number. The code is concise, with no unnecessary lines. Each action (loop, print, condition) is on its own line, enhancing clarity. The reading flow is natural from problem to solution. Minor deductions: class name could be more descriptive, but this is negligible.

Run 3

The code is well-structured and readable. It has a clear, flat structure with only two nested loops and a simple conditional, making the logic easy to follow. Intent is evident: print divisors of numbers 1 to 100. The code is concise and each line performs a single action. Reading flow is natural, with input-free logic and straightforward printing. Minor deductions: Could use a constant for the upper limit (100) to improve reusability, and the inner loop could be optimized to iterate only up to i/2 (excluding the number itself) for better efficiency, but these do not significantly impact readability. Overall, high readability with slight room for improvement in maintainability.

Run 1

Code Structure: Logically organized around listing each number and its divisors. Nesting: Two loops and one conditional introduce moderate, necessary nesting that remains easy to follow. Clarity of intent: The class name, output text, and modulo check clearly communicate the purpose, though more descriptive variable names could help beginners. Code length: Concise, with no unnecessary code. Action granularity: Each statement performs a single clear action; the loop headers use standard Java conventions. Reading flow: Execution follows a natural sequence from heading to divisor checks to newline. Slightly inconsistent indentation is the main readability weakness.

Run 2

Code Structure: Logically organized, with each number's heading, divisors, and newline grouped together. Nesting: Two loops and one conditional introduce moderate but appropriate nesting. Clarity of intent: The class name, output labels, and modulo check clearly communicate the purpose; more descriptive variable names could improve clarity. Code length: Concise, with no unnecessary statements. Action granularity: Each statement performs a single clear action, and loop controls follow standard conventions. Reading flow: Execution follows a natural sequence, though inconsistent indentation slightly reduces visual readability.

Run 3

Code Structure: Logically organized around iterating through numbers and printing their divisors. Nesting: Two loops and one conditional create moderate, justified nesting that is easy to follow. Clarity of intent: The class name, output label, and modulo check clearly convey the purpose, though more descriptive variable names could help. Code length: Concise, with no unnecessary statements. Action granularity: Each statement performs one clear action; loop headers use conventional Java syntax. Reading flow: Execution progresses naturally from the number label to its divisors and then a newline. Slightly inconsistent indentation and the hard-coded upper limit are minor readability weaknesses.