Sample

Scalabrio110

Human rating uses the original dataset scale.

DatasetScalabrino
Human3.56
Lines35

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
60.8Δ 15.3
Scalabrino0.3880–1; higher is more readable
35.2Δ 10.3
Dorn0.5150–1; higher is more readable
59.3Δ 13.8
Mi0.3180–1; higher is more readable
59.8Δ 14.3
LLOC12Logical lines; fewer is more readable
57.3Δ 11.8
DeepSeek V4 Pro140–20; mean of three runs
49.2Δ 3.8
GPT-6.1 Sol160–20; mean of three runs
34.7Δ 10.8
BTTF0.5650–1; higher is more readable
62.8Δ 17.3
Human3.561–5; original rating
45.5

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.815.163−26.9
Source linesThe number of non-empty source lines.35+14
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.87−7.305

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

Score0.388

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.133.971−2.009
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.134+1.358
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.064+0.324
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.35−0.203
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.33.844+0.063
Indentation frequencyHow rapidly indentation changes from line to line.23+0.058

Intercept 0.07 + feature contributions = 0.059 (log-odds).
Score = sigmoid(0.059) = 0.515.

Score0.318
Score12
Run 1

The code is highly readable with clear structure and intent. It uses well-defined methods and exception handling that make the flow logical. The nesting is shallow with a single loop and try-finally blocks that don't exceed two levels. The Javadoc and inline comments provide helpful context without being excessive. Each action is on its own line, promoting clarity. The method is concise, avoiding unnecessary length while handling important edge cases like transaction registration and cache invalidation. The reading flow is natural: iterate, execute, register processes, then handle cache invalidation and cleanup. Minor improvements could include breaking the long cache invalidation comment into a more concise form, but overall this is excellent readability.

Run 2

The code has some positive aspects, like Javadoc and comments explaining intent, but readability suffers due to complexity. The method combines several responsibilities: executing actions, registering transaction processes, invalidating query spaces conditionally, clearing the list, and executing batch. This violates single responsibility. Nesting is deep: a try-finally block with a for loop containing another try-finally and an if condition. Multiple actions are performed on single lines within the inner finally block, reducing granularity. Reading flow is disrupted by the large conditional block in the outer finally. The logic around transaction process registration inside a loop that may partially execute is not immediately clear. Error handling combines resource cleanup with conditional cache invalidation, making the control flow harder to follow. However, exception handling is structured, and the todo comment acknowledges the double iteration, showing some self-awareness.

Run 3

The code is generally readable with clear variable names and logical organization. The method has a single responsibility and the try-finally blocks properly ensure resource cleanup. However, there are a few readability challenges: the generic type bounds are complex and could benefit from extraction or documentation, the nested try-finally blocks create some indentation depth, and the comment about double iteration suggests potential structural improvements. The code length is reasonable, with generally one action per line, though the combined list.clear() and executeBatch() at the end could be separated for clarity. The TODO comment adds helpful context about known limitations. The Javadoc is concise but could describe the method's parameters more clearly. Overall, the code structure is solid but could be improved by reducing nesting depth and simplifying generic declarations.

Run 1

1. Code Structure: Logically organizes execution, transaction-process registration, cache invalidation, and final cleanup. Nested try/finally blocks preserve important failure-handling behavior. 2. Nesting: Moderate nesting from the loop and two try/finally layers increases reading effort but is justified. 3. Clarity of intent: Descriptive method names and explanatory comments make the purpose clear, although the variable 'e' is terse and the generic signature is dense. 4. Code length: Compact overall; the TODO and cache-invalidation comments add useful context but are somewhat verbose. 5. Action granularity: Each statement performs a distinct action, with no crowded multi-action lines. 6. Reading flow: Execution proceeds naturally into registration and invalidation, then clearing and batch execution. However, understanding which operations occur after an exception requires careful attention to the finally boundaries.

Run 2

Code Structure: Logically organized into execution, callback registration, cache invalidation, and final cleanup/batch execution. Nesting: Nested try/finally blocks within a loop, plus a conditional, add complexity but reflect exception-handling requirements. Clarity of intent: The method name, documentation, and comments explain its purpose and cache behavior; the variable name 'e' is less descriptive. Code length: Mostly concise, although lengthy comments and the generic signature add reading overhead. Action granularity: Each statement performs a distinct action, with no compressed multi-action lines. Reading flow: Operations follow a natural sequence, but readers must track which finally blocks run on failure and recognize that list clearing and batch execution are skipped if an exception propagates.

Run 3

Code Structure: Logically organized into execution, transaction-process registration, cache invalidation, and final cleanup/batch execution. Nesting: Nested try/finally blocks inside a loop add complexity, but serve clear exception-handling purposes. Clarity of intent: Descriptive method names and comments explain execution and invalidation; the generic variable 'e' is less descriptive. Code length: Reasonably concise, though the lengthy signature, chained calls, and comments increase reading effort. Action granularity: Each statement performs one primary action, with some compound expressions for registration and array conversion. Reading flow: Mostly natural, but readers must carefully track finally semantics and recognize that list clearing and batch execution are skipped if an exception propagates.