Sample

Scalabrio84

Human rating uses the original dataset scale.

DatasetScalabrino
Human2.89
Lines41

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
25.6Δ 13.8
Scalabrino0.4490–1; higher is more readable
42.7Δ 30.9
Dorn0.5950–1; higher is more readable
66.8Δ 55.0
Mi0.0970–1; higher is more readable
34.7Δ 22.9
LLOC14Logical lines; fewer is more readable
49.2Δ 37.4
DeepSeek V4 Pro170–20; mean of three runs
90.2Δ 78.4
GPT-6.1 Sol180–20; mean of three runs
83.7Δ 71.9
BTTF0.4570–1; higher is more readable
26.6Δ 14.8
Human2.891–5; original rating
11.8

Views

Download official ZIP ↗

Select the downloaded ZIP or its extracted folder. Files stay in your browser.

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.1352.678−44.638
Source linesThe number of non-empty source lines.41+16.4
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.888−7.331

Intercept 8.87 + feature contributions = -26.7 (log-odds).
Score = sigmoid(-26.7) = 0.

Score0.449

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.119.905−1.414
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.119.929+1.131
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.42−0.451
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398
Indentation frequencyHow rapidly indentation changes from line to line.30+0.301
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.078+0.187
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.40.909+0.162

Intercept 0.07 + feature contributions = 0.383 (log-odds).
Score = sigmoid(0.383) = 0.595.

Score0.097
Score14
Run 1

The code is well-structured with a clear, single-purpose method and logical flow. It uses early returns to avoid nesting and maintain flat readability. Each line performs one action, and the intent is clear—building an attribute descriptor or returning null for non-JPA attributes. The Javadoc, trace logs, and variable names enhance understanding. The only slight drawback is the long method name and a few castings that add minor cognitive load, but overall it is concise, maintainable, and highly readable.

Run 2

The code is generally well-structured with clear logical separation: synthetic property check, metadata determination, and plural vs singular branching. Nesting is minimal and flat. Intent is clear through descriptive method/variable names and inline comments explaining the synthetic property skip. Action granularity is mostly one action per line, though the final SingularAttributeImpl constructor call packs many arguments. Reading flow is natural top-to-bottom. Minor deductions: the method is somewhat long for a builder, the cast to PluralAttributeMetadata before passing could benefit from a comment, and the boolean arguments (false, false) in the constructor are ambiguous without checking the target class. Overall readable, but could be improved by extracting the singular attribute construction or adding clarifying comments for boolean parameters.

Run 3

The code is well-structured and readable. It follows a clear logical flow: early returns handle edge cases, then metadata is determined and used to branch into plural vs singular attribute construction. Nesting is minimal, with only one conditional block for plural attributes. Intent is clear from descriptive method and variable names (e.g., 'attributeMetadata', 'buildPluralAttribute'). The method is concise and each line performs a single action, maintaining good action granularity. Reading flow is natural, with trace logs aiding understanding. Minor deductions: the @SuppressWarnings annotation suggests some unchecked cast complexity, and the final constructor call has many parameters, which slightly reduces clarity. Overall, the code demonstrates excellent readability.

Run 1

Code Structure: Logically organized into filtering, metadata resolution, and plural or singular attribute construction. Nesting: Shallow conditionals with early returns keep the method flat. Clarity of intent: Descriptive names, documentation, and a helpful comment make the purpose clear; unchecked casts and positional boolean constructor arguments slightly obscure details. Code length: Concise for its responsibilities, with no obvious redundant logic. Action granularity: Each statement performs a distinct operation, and constructor arguments are separated onto individual lines. Reading flow: The sequence naturally progresses from validation to descriptor creation, though long generic declarations and the lengthy constructor call add minor reading friction.

Run 2

Code Structure: Well organized into synthetic-property filtering, metadata resolution, and plural or singular attribute construction. Nesting: Shallow conditionals and early returns keep the method flat. Clarity of intent: Descriptive names, Javadoc, and a targeted comment explain the purpose; unchecked casts and positional boolean constructor arguments slightly obscure details. Code length: Appropriately concise, though generic type declarations and long identifiers add visual weight. Action granularity: Each statement performs a distinct operation, and constructor arguments are clearly separated across lines. Reading flow: Execution follows a natural progression from validation to metadata processing to construction, with consistent formatting.

Run 3

Code Structure: Logically organized into filtering, metadata resolution, and plural or singular attribute construction. Nesting: Shallow conditionals and early returns keep the method flat. Clarity of intent: Descriptive names, Javadoc, and the synthetic-property comment explain the purpose well; unchecked casts and two unexplained boolean constructor arguments slightly reduce clarity. Code length: Appropriately concise for its responsibilities, although generic declarations and a long cast add visual weight. Action granularity: Each statement performs a distinct action, and constructor arguments are separated clearly. Reading flow: Natural top-to-bottom progression with straightforward branching; the positional constructor arguments require some external knowledge to fully interpret.