Sample
Scalabrio160
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.406 | 0–1; higher is more readable | 90.5Δ 2.5 |
| Scalabrino | 0.564 | 0–1; higher is more readable | 55.8Δ 32.2 |
| Dorn | 0.485 | 0–1; higher is more readable | 55.3Δ 32.7 |
| Mi | 0.792 | 0–1; higher is more readable | 97.5Δ 9.5 |
| LLOC | 5 | Logical lines; fewer is more readable | 91.2Δ 3.3 |
| DeepSeek V4 Pro | 12.67 | 0–20; mean of three runs | 35.2Δ 52.8 |
| GPT-6.1 Sol | 17.67 | 0–20; mean of three runs | 74.1Δ 13.8 |
| BTTF | 0.737 | 0–1; higher is more readable | 96.0Δ 8.0 |
| Human | 4.33 | 1–5; original rating | 87.9 |
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) |
|---|---|---|
| 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.542 | −6.812 |
| Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones. | 195.042 | −6.436 |
| Source linesThe number of non-empty source lines. | 10 | +4 |
Intercept 8.87 + feature contributions = -0.379 (log-odds).
Score = sigmoid(-0.379) = 0.406.
| Score | 0.564 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| 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 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 1 | −0.703 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.067 | +0.29 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 8.798 | −0.287 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 9 | +0.214 |
| 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. | 82.8 | +0.158 |
Intercept 0.07 + feature contributions = -0.06 (log-odds).
Score = sigmoid(-0.06) = 0.485.
| Score | 0.792 |
|---|
| Score | 5 |
|---|
Run 1
The code is fairly readable with clear intent, good action granularity, and reasonable structure. It is concise and flat with minimal nesting. However, the method name is long, and the empty catch block is slightly ambiguous without a comment. The sequence of actions flows logically, but the unexplained catch and method name length slightly reduce clarity.
Run 2
The code is relatively short and each line performs a single action, which helps with granularity. However, the structure is confusing: the method name is long and mixes concerns (timeout vs exception). The try-catch block swallows a Throwable without any comment or assertion, making intent ambiguous. The nesting is shallow, but the logic flow is disorganized—the first call's exception is silently ignored, then a second call is made with a custom wait duration, which does not clearly explain why this should trigger a timeout. The test's purpose is hard to grasp without additional context, and the method name doesn't match the body's behavior. Overall, the code lacks clarity and natural reading flow.
Run 3
The code is generally readable but has some issues. The method name is long but descriptive, clearly conveying intent. Structure is logical: set up expectation, execute first call (expecting and swallowing a RuntimeException), then execute the timed call. Nesting is minimal with only one try-catch block. However, the empty catch block with just a comment-like variable name is slightly awkward; using a more explanatory comment or assert would improve clarity. The second call 'evaluateWithWaitDuration(TIMEOUT + 50)' is concise but could benefit from a brief comment explaining why 50ms is added. Overall, the code follows a clear test pattern (arrange-act-assert), though the empty catch and unexplained timing constant slightly reduce readability.
Run 1
Code Structure: The test is logically organized into expectation setup, first-call execution, and second-call verification. Nesting: A single try-catch keeps nesting shallow. Clarity of intent: The descriptive method name and helper names explain the scenario, although the empty catch block leaves intentional exception suppression implicit, and catching Throwable is broad. Code length: Short and focused, with no unnecessary statements. Action granularity: Each statement performs one clear action. Reading flow: Execution proceeds naturally in test order, though the hard-coded timeout message alongside TIMEOUT + 50 makes the timing relationship slightly less transparent.
Run 2
Code Structure: The test is logically organized into expectation, first call, and second call. Nesting: A single try-catch keeps nesting shallow. Clarity of intent: The descriptive method name explains the scenario, but the empty catch block and broad Throwable handling leave the intentionally ignored exception implicit. Code length: The test is concise, though its method name is lengthy. Action granularity: Each statement performs one action. Reading flow: Execution follows a natural sequence, with only the unexplained TIMEOUT + 50 margin slightly interrupting understanding.
Run 3
Code Structure: The test logically arranges the expected timeout, first failing call, and second delayed call. Nesting: A single try-catch keeps nesting shallow. Clarity of intent: The descriptive method name explains the scenario, although catching Throwable with an empty body obscures whether the first exception is verified. Code length: Compact, with little unnecessary code; the long method name is informative. Action granularity: Each statement performs one action. Reading flow: Execution follows the test scenario naturally, though the hard-coded 100 in the expected message and TIMEOUT + 50 require readers to infer their relationship.