Sample
Scalabrio178
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 61.8Δ 34.4 |
| Scalabrino | 0.227 | 0–1; higher is more readable | 19.1Δ 8.3 |
| Dorn | 0.094 | 0–1; higher is more readable | 14.6Δ 12.8 |
| Mi | 0.047 | 0–1; higher is more readable | 22.1Δ 5.3 |
| LLOC | 10 | Logical lines; fewer is more readable | 68.6Δ 41.2 |
| DeepSeek V4 Pro | 14.67 | 0–20; mean of three runs | 57.8Δ 30.4 |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs | 83.7Δ 56.3 |
| BTTF | 0.542 | 0–1; higher is more readable | 53.8Δ 26.4 |
| 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. | 647.856 | −21.379 |
| Source linesThe number of non-empty source lines. | 21 | +8.4 |
| 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.486 | −6.728 |
Intercept 8.87 + feature contributions = -10.838 (log-odds).
Score = sigmoid(-10.838) = 0.
| Score | 0.227 |
|---|
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. | 114.952 | −1.204 |
| 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 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 21 | +0.293 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.069 | +0.271 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 19.871 | −0.132 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 21 | −0.061 |
Intercept 0.07 + feature contributions = -2.27 (log-odds).
Score = sigmoid(-2.27) = 0.094.
| Score | 0.047 |
|---|
| Score | 10 |
|---|
Run 1
The code is moderately readable but has several issues. Structure is mostly logical, with a clear test setup, action, and cleanup. Nesting is flat, which is good. However, clarity of intent is somewhat ambiguous: the test name is descriptive but the assertions rely on implementation details (e.g., DirectPropertyAccessor) rather than behavioral outcomes. Code length is acceptable but slightly verbose due to the chained factory method call for getting the tuplizer. Action granularity is generally one action per line, except the chained tuplizer retrieval which packs multiple accesses into one statement, reducing readability. Reading flow is disrupted by the chained call and the inconsistent indentation of the final `factory.close()` line. Overall, it is understandable but could be improved by extracting the tuplizer retrieval into a helper method or variable, and by better formatting the close statement.
Run 2
The code is well-structured with clear intent and logical organization. It demonstrates good action granularity with one primary operation per line, and the reading flow is natural - from configuration setup through tuplizer retrieval to assertions. Nesting is minimal and shallow, only occurring within assertion method calls. The method name is descriptive and the use of assertion messages clearly communicates expected behavior. Minor readability improvements could include separating the tuplizer retrieval chain into a variable for even clearer intent, and maintaining consistent indentation (the closing brace appears slightly misaligned). The code is concise and focused on testing access strategy behavior without unnecessary verbosity.
Run 3
The code is well-structured and readable. It follows a logical sequence: setup, execution, assertions, and cleanup. Nesting is minimal—only one level of assertTrue blocks, which slightly indents arguments but remains clear. Intent is clear: testing Hibernate property access annotations. Length is appropriate, with no unnecessary lines. Each statement performs one action, maintaining good granularity. Reading flow is natural, progressing from configuration to verification. Minor deductions: assertTrue arguments span multiple lines due to indentation style, and the final factory.close() is slightly less visible. Overall, a concise and understandable test method.
Run 1
Code Structure: Clearly organized into configuration, factory creation, tuplizer retrieval, assertions, and cleanup. Nesting: Flat execution with no nested control flow. Clarity of intent: The descriptive test name and assertion messages clearly communicate the expected access behavior, though getGetter(0) leaves the specific property implicit. Code length: Concise and appropriately sized for a focused test. Action granularity: Most statements perform one action; the chained tuplizer lookup remains easy to follow. Reading flow: Natural setup-to-verification progression, aided by whitespace and multiline formatting. Minor drawbacks include inconsistent indentation on factory.close() and cleanup that is not guaranteed if an assertion fails.
Run 2
Code Structure: The test follows a clear setup, inspection, assertion, and cleanup sequence. Nesting: The body is flat, with no nested control flow. Clarity of intent: The descriptive test name and assertion messages explain the expected field-versus-property access behavior, though getGetter(0) leaves the specific property implicit. Code length: Concise, with little unnecessary code; the long test name and factory construction line slightly reduce scanability. Action granularity: Statements generally perform one action each, and the chained metadata lookup is split across lines. Reading flow: Execution proceeds naturally, but inconsistent indentation on factory.close() and uneven line wrapping slightly disrupt visual consistency.
Run 3
Code Structure: Logically organized into configuration, factory creation, accessor inspection, assertions, and cleanup. Nesting: Flat, with no nested control flow; the chained calls remain easy to follow. Clarity of intent: The descriptive test name and assertion messages clearly communicate the expected access strategies, although getGetter(0) does not identify the property being tested. Code length: Concise and appropriate for a focused test. Action granularity: Statements generally perform one clear action each, and the method chain is split across lines. Reading flow: Natural setup-to-verification progression, supported by whitespace. Minor readability issues include inconsistent indentation on factory.close(), a lengthy test name, and somewhat verbose assertion formatting.