Sample
Scalabrio125
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 48.7Δ 36.9 |
| Scalabrino | 0.262 | 0–1; higher is more readable | 22.6Δ 10.8 |
| Dorn | 0.629 | 0–1; higher is more readable | 68.8Δ 57.0 |
| Mi | 0.148 | 0–1; higher is more readable | 41.2Δ 29.4 |
| LLOC | 12 | Logical lines; fewer is more readable | 57.3Δ 45.5 |
| DeepSeek V4 Pro | 15 | 0–20; mean of three runs | 61.6Δ 49.7 |
| GPT-6.1 Sol | 17 | 0–20; mean of three runs | 58.5Δ 46.7 |
| BTTF | 0.465 | 0–1; higher is more readable | 28.6Δ 16.8 |
| Human | 2.89 | 1–5; original rating | 11.8 |
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. | 767.564 | −25.33 |
| Source linesThe number of non-empty source lines. | 20 | +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. | 4.326 | −6.489 |
Intercept 8.87 + feature contributions = -14.948 (log-odds).
Score = sigmoid(-14.948) = 0.
| Score | 0.262 |
|---|
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 |
| 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.08 | +0.161 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 18.744 | −0.148 |
| 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. | 89 | −0.104 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 20 | −0.045 |
Intercept 0.07 + feature contributions = 0.527 (log-odds).
Score = sigmoid(0.527) = 0.629.
| Score | 0.148 |
|---|
| Score | 12 |
|---|
Run 1
The code is generally well-structured with clear intent. It has a single responsibility: creating a timeout exception, optionally with stuck thread details. The nesting depth is shallow (one level), maintaining a flat structure. Action granularity is mostly one action per line, aiding readability. The use of explanatory variable names like 'stuckThread' and 'currThreadException' improves clarity. Minor issues include slight formatting inconsistency in the MultipleFailureException constructor and the line-split exception message, but these don't significantly impair readability. The method length is reasonable, and the reading flow follows a logical sequence: get stack trace, find stuck thread, build exception, handle stuck thread case. Overall, the code is readable and maintainable.
Run 2
The code is moderately readable but has several issues. Structure is logical with clear branches, but nesting is minimal and flow is mostly natural. Clarity of intent is decent, though the fLookForStuckThread condition and getStuckThread usage are not self-explanatory. Code length is acceptable but some lines are too long, especially the MultipleFailureException construction and the String.format call, reducing readability. Action granularity is mixed: some lines combine multiple operations (e.g., setStackTrace then interrupt), while others are clean. The stuckThreadException creation is awkwardly formatted with a space before the opening parenthesis. Variable naming is generally clear, but abbreviations like 'fLookForStuckThread' and 'fTimeout' add friction. Overall it's understandable but could benefit from tighter formatting, shorter lines, and more descriptive naming.
Run 3
The code is generally readable with clear intent and logical structure. It has a single responsibility (creating a timeout exception), uses flat nesting with only one level of if-else, and maintains one action per line in most places. Variable names are descriptive (e.g., stuckThread, currThreadException). However, readability is slightly reduced by the long string-formatting line, the awkward ternary operator for stuckThread, and the questionable check 'if (stackTrace != null)' since getStackTrace() always returns non-null. The method also mutates state (thread.interrupt()) inside an exception-building method, which slightly muddies its purpose. The conditional variable declaration pattern (stuckThread = condition ? method() : null) could be clearer with explicit initialization. Overall, it's solid but could be tightened for better clarity.
Run 1
Code Structure: Logically organized into collecting thread information, creating a timeout exception, and optionally reporting a stuck thread. Nesting: Shallow conditional blocks make it easy to follow; the final else is unnecessary after a return. Clarity of intent: The method and most variable names clearly convey their purpose, though legacy f-prefixed fields and the conditional interruption slightly obscure intent. Code length: Concise, with no substantial repetition. Action granularity: Each statement performs a distinct action, although exception construction embeds message formatting. Reading flow: Execution proceeds naturally from gathering information to returning the appropriate exception. Inconsistent spacing and awkward line breaks around exception constructors slightly reduce readability.
Run 2
Code Structure: Logically separates timeout exception creation, stack-trace handling, and optional stuck-thread reporting. Nesting: Shallow conditionals make the method easy to follow. Clarity of intent: Descriptive names and exception messages communicate the purpose, though interrupting the thread is a side effect not obvious from the method name. Code length: Compact overall; the final else is unnecessary after a return. Action granularity: Each statement performs one main action, with straightforward expressions. Reading flow: Follows a natural sequence from collecting diagnostic information to returning an exception, but inconsistent spacing and awkward line breaks around exception construction slightly disrupt readability.
Run 3
Code Structure: Logically organized into timeout exception creation, stack-trace handling, and optional stuck-thread reporting. Nesting: Shallow conditionals make the control flow easy to follow; the final else is unnecessary after a return. Clarity of intent: The method name, descriptive variables, and exception messages communicate its purpose, though interrupting the thread is a side effect not suggested by the method name. Code length: Appropriately concise, with minor opportunities to simplify formatting and the final return. Action granularity: Each statement performs a distinct action; wrapped expressions remain understandable. Reading flow: Mostly natural and sequential, but inconsistent spacing and awkward line breaks around exception construction slightly disrupt readability.