Sample
Scalabrio156
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.367 | 0–1; higher is more readable | 89.4Δ 62.1 |
| Scalabrino | 0.226 | 0–1; higher is more readable | 18.6Δ 8.8 |
| Dorn | 0.746 | 0–1; higher is more readable | 85.9Δ 58.5 |
| Mi | 0.672 | 0–1; higher is more readable | 89.9Δ 62.6 |
| LLOC | 3 | Logical lines; fewer is more readable | 96.5Δ 69.1 |
| DeepSeek V4 Pro | 12.33 | 0–20; mean of three runs | 33.4Δ 6.0 |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs | 83.7Δ 56.3 |
| BTTF | 0.675 | 0–1; higher is more readable | 88.9Δ 61.6 |
| Human | 3.22 | 1–5; original rating | 27.4 |
Views
Select the downloaded ZIP or its extracted folder. Files stay in your browser.
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (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. | 417.786 | −13.787 |
| Source linesThe number of non-empty source lines. | 25 | +10 |
| 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.751 | −5.627 |
Intercept 8.87 + feature contributions = -0.544 (log-odds).
Score = sigmoid(-0.544) = 0.367.
| Score | 0.226 |
|---|
Feature contributions
| Feature | Value | Contribution (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. | 39.88 | +1.976 |
| 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 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 25 | +0.151 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 23.22 | −0.085 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.089 | +0.076 |
Intercept 0.07 + feature contributions = 1.079 (log-odds).
Score = sigmoid(1.079) = 0.746.
| Score | 0.672 |
|---|
| Score | 3 |
|---|
Run 1
The method is concise but lacks clarity of intent. It assembles a heterogeneous Object array by invoking many getter-like methods, with null elements used as delimiters. The purpose of the null entries is ambiguous without additional context. The structure is flat and each action is placed on one line, which supports action granularity, but the reading flow is unnatural due to arbitrary grouping and unexplained null separators. The method is not deeply nested, and code length is minimal, but the logic is opaque. A more readable approach would group related items into named collections or use a builder pattern to express intent.
Run 2
The code is straightforward and readable. The method has a single purpose—assembling an array of UML actions—and the array literal is formatted with one item per line, which improves scanning and maintains clear action granularity. The logical grouping using null separators is visible, though the intent of these nulls could be clarified with comments or constants. Nesting is minimal, structure is flat, and the code length is concise. The reading flow is natural, and the method returns the constructed array immediately, with no side effects or complex logic.
Run 3
The method is simple and its purpose is fairly clear: it assembles an array of UML-related actions. The code is flat, with no nesting, and each action is placed on its own line, which helps readability. However, there are several issues. The use of null placeholders is ambiguous—comment lines indicating what the nulls represent (e.g., separators or future items) would improve clarity. The method name 'getUmlActions' is understandable, but the array construction lacks context: why are some actions grouped together and others not? The reading flow is natural enough, but the structure feels somewhat arbitrary due to the null entries. Overall, it is readable but could be improved with comments or a more structured approach, so it scores moderately.
Run 1
Code Structure: A straightforward array initializer followed by a return is logically organized, with null entries apparently separating action groups. Nesting: Minimal nesting makes the method easy to scan. Clarity of intent: The method and action getter names clearly indicate UML action collection, although the meaning of null separators and the use of Object[] are not explicit. Code length: Concise, with only a slightly unnecessary local variable. Action granularity: Each action occupies its own line, improving readability. Reading flow: The consistent formatting and grouped sequence provide a natural top-to-bottom flow, though comments naming the groups could clarify the ordering.
Run 2
Code Structure: A straightforward method with a logically grouped action array and a clear return. Nesting: Minimal, with no nested control flow. Clarity of intent: The method and action names clearly indicate UML action collection, though null separators and the broad Object[] type leave some semantics implicit. Code length: Concise; the local variable could be omitted with a direct return, but it aids readability. Action granularity: Each array entry occupies its own line, making individual actions easy to identify. Reading flow: Natural top-to-bottom construction followed by return, with null entries visually separating groups.
Run 3
Code Structure: A single method builds and returns a logically grouped action array. Nesting: Minimal, with no branching or nested control flow. Clarity of intent: The method and action getter names clearly indicate UML actions, though the meaning of null entries is implicit. Code length: Concise; the temporary variable is optional but does not impede readability. Action granularity: Each array entry occupies its own line, making individual actions easy to scan. Reading flow: Consistent formatting and grouping support a natural top-to-bottom reading order, although comments explaining the null separators could improve clarity.