Sample
Scalabrio161
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 63.8Δ 18.3 |
| Scalabrino | 0.426 | 0–1; higher is more readable | 38.7Δ 6.8 |
| Dorn | 0.521 | 0–1; higher is more readable | 60.3Δ 14.8 |
| Mi | 0.074 | 0–1; higher is more readable | 28.6Δ 16.8 |
| LLOC | 17 | Logical lines; fewer is more readable | 35.7Δ 9.8 |
| DeepSeek V4 Pro | 15 | 0–20; mean of three runs | 61.6Δ 16.1 |
| GPT-6.1 Sol | 17 | 0–20; mean of three runs | 58.5Δ 13.1 |
| BTTF | 0.674 | 0–1; higher is more readable | 88.4Δ 43.0 |
| Human | 3.56 | 1–5; original rating | 45.5 |
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. | 754.433 | −24.896 |
| Source linesThe number of non-empty source lines. | 29 | +11.6 |
| 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.195 | −6.292 |
Intercept 8.87 + feature contributions = -10.718 (log-odds).
Score = sigmoid(-10.718) = 0.
| Score | 0.426 |
|---|
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. | 113.966 | −1.162 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 114 | +1.035 |
| 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.05 | +0.458 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 27.73 | −0.022 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 29 | +0.01 |
Intercept 0.07 + feature contributions = 0.083 (log-odds).
Score = sigmoid(0.083) = 0.521.
| Score | 0.074 |
|---|
| Score | 17 |
|---|
Run 1
The code is structured logically for a test method but suffers from verbosity and redundant naming. The flat structure and one-action-per-line style aid readability, but the code length is excessive due to long variable names and repetitive stack trace checking logic. The intent is clear—verifying that the stack trace contains only the real cause—but the implementation could be more concise. The nested try-catch is minimal, and the reading flow is generally natural. However, the boolean flag approach feels clunky; using stream-based checks like `Arrays.stream(stackTrace).anyMatch(e -> e.getMethodName().equals(...))` would reduce length and improve clarity. Overall, readable but verbose, with no major structural issues.
Run 2
The code is moderately readable but has some issues. The test structure is logically organized with a clear try-catch pattern, and the intent to verify stack trace contents is understandable. However, the code suffers from verbose variable names that are overly long (e.g., 'stackTraceContainsTheRealCauseOfTheTimeout'), which hurts readability despite being descriptive. The boolean flag logic inside the loop is somewhat repetitive, and the loop iterates over all stack elements without early exit. Nesting is acceptable at two levels deep, and action granularity is mostly one action per line. The reading flow is natural, but the long variable names make it harder to scan quickly. More concise names like 'foundRealCause' and 'foundOtherCause' would improve clarity significantly.
Run 3
The code is well-structured with clear intent and good naming conventions. The test method follows a logical arrange-act-assert pattern with appropriate exception handling. Nesting is minimal (one try-catch block and one loop), maintaining flat readability. Action granularity is appropriate, with one meaningful operation per line. The boolean variable names are descriptive, making the assertions easy to understand. The code length is reasonable for the test's purpose - not overly verbose despite the long variable names. Reading flow is natural, progressing from setup through execution to verification. Minor deductions could apply for the lengthy assertion messages and boolean names being slightly verbose, but overall this is highly readable test code.
Run 1
Code Structure: Clearly organized into setup, execution, exception inspection, and assertions. Nesting: Moderate nesting from try/catch, a loop, and conditionals, but easy to follow. Clarity of intent: The test name, explanatory comment, and assertion messages clearly communicate the expected behavior; lengthy boolean names are descriptive but cumbersome. Code length: Reasonably concise, though repeated long identifiers and manual stack-trace scanning add verbosity. Action granularity: Each statement performs one distinct action, making execution easy to track. Reading flow: Natural progression from triggering the timeout to checking its stack trace. Catching a broad Exception slightly obscures which exception type is expected.
Run 2
Code Structure: Logically organized into setup, execution, exception inspection, and assertions. Nesting: Moderate try/catch, loop, and conditional nesting remains manageable. Clarity of intent: The test name, explanatory comment, and assertion messages clearly describe the expected behavior; lengthy boolean names are explicit but cumbersome. Code length: Mostly concise, though repeated flag checks and verbose identifiers add some bulk. Action granularity: Each line generally performs one action, making state changes easy to follow. Reading flow: Natural progression from triggering a timeout to checking its stack trace, with final assertions clearly separated. Catching a broad Exception slightly weakens clarity because the code does not explicitly verify that the caught exception is a timeout.
Run 3
Code Structure: Logically organized into setup, execution, exception inspection, and assertions. Nesting: Moderate nesting within the catch block, loop, and conditionals, but easy to follow. Clarity of intent: The descriptive test name, comment, and assertion messages clearly explain the expected behavior; variable names are precise but cumbersome. Code length: Reasonably concise, though repeated method-name checks and long boolean names add verbosity. Action granularity: Each statement performs one clear action, with no compressed or compound operations. Reading flow: Progresses naturally from triggering a timeout to verifying its stack trace. Catching a broad Exception slightly weakens clarity because it does not explicitly distinguish timeout exceptions from other failures.