Sample
Scalabrio44
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.008 | 0–1; higher is more readable | 81.4Δ 8.0 |
| Scalabrino | 0.921 | 0–1; higher is more readable | 95.5Δ 22.1 |
| Dorn | 0.722 | 0–1; higher is more readable | 81.4Δ 8.0 |
| Mi | 0.647 | 0–1; higher is more readable | 85.9Δ 12.6 |
| LLOC | 14 | Logical lines; fewer is more readable | 49.2Δ 24.1 |
| DeepSeek V4 Pro | 8 | 0–20; mean of three runs | 10.6Δ 62.8 |
| GPT-6.1 Sol | 15 | 0–20; mean of three runs | 19.6Δ 53.8 |
| BTTF | 0.681 | 0–1; higher is more readable | 89.9Δ 16.6 |
| Human | 4 | 1–5; original rating | 73.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. | 706.394 | −23.311 |
| Source linesThe number of non-empty source lines. | 39 | +15.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.027 | −6.041 |
Intercept 8.87 + feature contributions = -4.882 (log-odds).
Score = sigmoid(-4.882) = 0.008.
| Score | 0.921 |
|---|
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. | 77 | +0.404 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 73.128 | +0.375 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.059 | +0.365 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 39 | −0.345 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 24 | −0.13 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 37.846 | +0.119 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 24 | +0.093 |
Intercept 0.07 + feature contributions = 0.952 (log-odds).
Score = sigmoid(0.952) = 0.722.
| Score | 0.647 |
|---|
| Score | 14 |
|---|
Run 1
The code is generally understandable but has several readability issues. Structure is reasonable, but it lacks separation of concerns (e.g., caching logic mixed with lookup). Nesting is moderate—two levels deep—but could be flattened. Intent is mostly clear from the comments, though the method name and comment contradict the return type (says 'Checklist or null' but returns null explicitly). Code length is fine, but action granularity breaks in the first if block, which puts cast and get on one line while the closing brace is misaligned. Reading flow is natural overall, but the inner loop variable 'intfs' is poorly named and the loop could use a for-each. Error handling is absent, and mixing 'cls' and 'clazz' is confusing.
Run 2
The code has a clear purpose and helpful comments, but suffers from structural issues. The first if-statement returns an unchecked cast after a `contains` check, which is inefficient and redundant. The main nested loop contains multiple actions (interface retrieval, iteration, comparison, cache update, return) inside a while-loop, lowering action granularity and clarity. The indentation is inconsistent (mix of tabs and spaces), and variable names like `lists`, `cls`, `intfs`, and `chlist` are ambiguous. The comment block is verbose relative to the code length, though it does explain intent. Overall, the logic is understandable but not cleanly structured. It would benefit from method extraction, better naming, and flatter control flow.
Run 3
The code suffers from significant readability issues. The indentation is inconsistent, with the comment block misaligned and a stray tab before the closing brace of the first if statement. The method name and parameter name are too terse ('cls'), reducing clarity. The logic is tangled: the initial direct check is clear, but the subsequent linear search has deep nesting (while, for, if) requiring the reader to track multiple loops. The comment about adding to the hashtable is somewhat explanatory, but the overall flow is disorganized. The check for interface equality via linear search is inherently complex, yet the code does not aid understanding with helper methods or clearer variable names. Action granularity is mixed; some lines contain both retrieval and cast. The return null at the end is standard, but the path to it is convoluted. Overall, the structure and nesting lower readability despite some comments.
Run 1
Code Structure: Logically separates direct lookup, interface search, caching, and fallback. Nesting: The while/for/if combination introduces moderate nesting, though early returns simplify control flow. Clarity of intent: The method name and documentation explain lookup and caching well, but abbreviated names such as intfs and chlist, raw types, and the potentially confusing lists.contains(cls) check reduce clarity. Code length: Reasonably concise, although some comments merely restate operations and interface retrieval is unnecessarily repeated inside the outer loop. Action granularity: Most lines perform one action; the conventional for-loop header remains readable. Reading flow: Execution follows a natural fast-path-to-fallback sequence, but inconsistent indentation and searching keys before interfaces make the search slightly harder to follow.
Run 2
Code Structure: Logically organized into a direct lookup, interface search, caching, and fallback. Nesting: The while/for/if combination creates moderate nesting, though early returns simplify control flow. Clarity of intent: The method name and documentation explain the lookup and caching purpose, but abbreviated names such as intfs and chlist, raw types, and the unexplained lists.contains(cls) call reduce clarity. Code length: Reasonably concise, although some comments merely narrate obvious operations and getInterfaces() is unnecessarily repeated inside the loop. Action granularity: Most lines perform a single action; the conventional for-loop header remains readable. Reading flow: The fast-path-first sequence is natural, but inconsistent indentation and iterating keys before interfaces make the search slightly harder to follow.
Run 3
Code Structure: Logically separates direct lookup, interface search, caching, and failure return. Nesting: The while/for/if combination creates moderate nesting, although early returns simplify control flow. Clarity of intent: The method name and documentation explain lookup and caching, but abbreviated names such as intfs and chlist, raw types, and the potentially confusing contains call reduce clarity. Code length: Fairly concise, though repeated interface retrieval inside the loop and obvious comments add unnecessary work and clutter. Action granularity: Each statement performs a single main action, making individual steps easy to follow. Reading flow: The fast-path-to-fallback progression is natural, but inconsistent indentation and searching keys before interfaces slightly impede readability.