Sample

Scalabrio119

Human rating uses the original dataset scale.

DatasetScalabrino
Human4.11
Lines42

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
14.1Δ 64.1
Scalabrino0.0310–1; higher is more readable
0.5Δ 77.6
Dorn0.6930–1; higher is more readable
78.4Δ 0.3
Mi0.3450–1; higher is more readable
62.3Δ 15.8
LLOC28Logical lines; fewer is more readable
7.8Δ 70.4
DeepSeek V4 Pro8.670–20; mean of three runs
12.8Δ 65.3
GPT-6.1 Sol13.670–20; mean of three runs
7.5Δ 70.6
BTTF0.5370–1; higher is more readable
51.3Δ 26.9
Human4.111–5; original rating
78.1

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.1598.129−52.738
Source linesThe number of non-empty source lines.42+16.8
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.668−5.502

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

Score0.031

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.1+1.001
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.64.929+0.915
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Indentation frequencyHow rapidly indentation changes from line to line.1−0.703
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.119−0.211
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.40+0.149

Intercept 0.07 + feature contributions = 0.816 (log-odds).
Score = sigmoid(0.816) = 0.693.

Score0.345
Score28
Run 1

The code has a clear overall structure but suffers from excessive repetition. The initial check for 'ownedElement' and the logic to distinguish old vs new values is readable, with reasonable nesting depth. However, the series of near-identical if statements checking different model element types creates poor action granularity and readability. Each type check performs the same action (removeNode or removeEdge), making the code unnecessarily long and repetitive. The intent—removing various node types or edge types from the model—is obscured by the repetitive pattern. A more readable approach would use a single condition checking if the element is any node type or any edge type, reducing the 11 if blocks to 2 logical checks. The code also lacks meaningful variable names (eo, me, pce) which reduces clarity. The reading flow is interrupted by the repetitive blocks, making it harder to grasp the overall purpose at a glance.

Run 2

The code has a clear top-level intention (handling 'ownedElement' changes) but suffers from several readability issues. The structure is repetitive: multiple sequential 'if' blocks each call removeNode() or removeEdge() based solely on type, creating a long, dense method. Nesting is three levels deep, which is acceptable, but the repetitive conditionals make it feel more tangled than necessary. Intent is somewhat clear at the start, but the series of type checks obscures the purpose — consolidating these into a single check (e.g., using a helper or predicate) would greatly improve clarity. Code length is unnecessarily long given the duplication. Action granularity is mostly one action per line, but the repetitive structure hurts reading flow. Naming is mostly clear, but the method lacks a summary of why these type checks exist. Overall, the logic is understandable but could be much more concise and maintainable.

Run 3

The code has a logical top-level structure with a single property check and an if-else for ownership, but readability suffers from repetitive type-checking blocks. The nesting is only two levels deep, which is acceptable. Intent is fairly clear—handle model element removal or addition on a property change—but the multiple near-identical 'if' statements obscure the main purpose. Code length is unnecessarily long due to repeated conditionals and calls. Action granularity is generally one action per line, which helps readability, but the repetitive structure weakens it. Reading flow is natural at the outer level but becomes monotonous and tedious within the branch. Refactoring the repeated type checks into a helper method or a single composite condition would significantly improve clarity and reduce length, potentially raising the score above 15.

Run 1

Code Structure: Logically organized around the property change and removal versus addition, but repetitive type checks obscure the simple structure. Nesting: Three levels of conditionals add moderate indentation; an early return could flatten the flow. Clarity of intent: Logging and removeNode/removeEdge clearly communicate behavior, although eo and me are vague names and the removal inference requires understanding the event semantics. Code length: Longer than necessary because several checks perform identical actions. Action granularity: Each statement performs one action, making individual operations easy to follow. Reading flow: Processing moves naturally from event filtering to value extraction and handling, but repeated facade calls and independent conditionals make the removal section tedious to scan.

Run 2

Code Structure: Logically organized around property filtering and removal versus addition, but repetitive type checks obscure the common operations. Nesting: Three conditional levels create moderate indentation; an early return could flatten the flow. Clarity of intent: Property checks, logging, and removeNode/removeEdge calls communicate the purpose, but eo and me are cryptic, and removal detection through oldOwned.contains(eo) requires interpretation. Code length: Unnecessarily long because seven checks repeat removeNode and three repeat removeEdge. Action granularity: Each statement performs a clear, discrete action, with no crowded lines. Reading flow: Consistent formatting and sequential checks make execution easy to follow, though repeated facade calls and nearly identical blocks slow reading.

Run 3

Code Structure: The property filter and removal/addition branches are logically organized, but repeated type checks obscure the common operations. Nesting: Three levels of conditionals increase indentation, though the logic remains manageable. Clarity of intent: Logging and removeNode/removeEdge calls communicate the purpose, but abbreviated names pce, eo, and me, along with implicit removal detection through oldOwned.contains(eo), require interpretation. Code length: Unnecessarily long because seven checks perform removeNode and three perform removeEdge; grouping related predicates could reduce repetition. Action granularity: Each statement performs one main action, making individual lines easy to follow. Reading flow: Consistent formatting and sequential checks support scanning, but repetitive facade calls slow reading and make the main decision less prominent.