Sample
Scalabrio127
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 11.6Δ 3.8 |
| Scalabrino | 0.111 | 0–1; higher is more readable | 8.0Δ 0.3 |
| Dorn | 0.482 | 0–1; higher is more readable | 54.8Δ 47.0 |
| Mi | 0.121 | 0–1; higher is more readable | 39.2Δ 31.4 |
| LLOC | 28 | Logical lines; fewer is more readable | 7.8Δ 0.0 |
| DeepSeek V4 Pro | 13.67 | 0–20; mean of three runs | 43.2Δ 35.4 |
| GPT-6.1 Sol | 17 | 0–20; mean of three runs | 58.5Δ 50.8 |
| BTTF | 0.508 | 0–1; higher is more readable | 40.7Δ 32.9 |
| Human | 2.78 | 1–5; original rating | 7.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. | 1681.729 | −55.497 |
| Source linesThe number of non-empty source lines. | 42 | +16.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.731 | −7.096 |
Intercept 8.87 + feature contributions = -36.923 (log-odds).
Score = sigmoid(-36.923) = 0.
| Score | 0.111 |
|---|
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. | 126.952 | −1.712 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 127 | +1.245 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 38 | −0.309 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 29 | +0.266 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.116 | −0.183 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 40.383 | +0.155 |
Intercept 0.07 + feature contributions = -0.071 (log-odds).
Score = sigmoid(-0.071) = 0.482.
| Score | 0.121 |
|---|
| Score | 28 |
|---|
Run 1
The test method has a clear sequential purpose but suffers from repetitive, verbose assertions and deep chaining. Structure is logical (setup, action, verification), but the repeated `TestingJtaPlatformImpl.INSTANCE.getTransactionManager()` inline calls bloat lines and obscure intent. Nesting is flat, which is good. Clarity of intent is mixed: comments explain certain actions, but assertions like `transaction.isParticipating()` lack context. Code length is unnecessarily long due to repetitive setup and assertion blocks. Action granularity is mostly one action per line, though some lines combine method calls and casts. Reading flow is natural for a test but verbose; extracting helper methods or constants would improve readability.
Run 2
The test method has a clear purpose and follows a logical sequence, testing transaction state changes. The use of assertions makes intent explicit. However, readability is hindered by several factors: long qualified names (e.g., TestingJtaPlatformImpl.INSTANCE.getTransactionManager()) create repetitive, noisy lines; casting and chaining are dense; and comments like 'causes a call to TransactionCoordinator#pulse' are necessary to clarify non-obvious side effects. Nesting is minimal, and action granularity is mostly one logical action per line, but the heavy use of static helper calls and repeated assertFalse/assertTrue blocks reduces flow. Overall, the code is test-focused and structured, but could benefit from local variables or helper methods to reduce verbosity and improve scanability.
Run 3
The code has a clear, linear test structure with good action granularity, but suffers from excessive cast expressions and repetitive fully-qualified names that obscure intent. The lack of helper methods or local variables for recurring operations like 'TestingJtaPlatformImpl.INSTANCE.getTransactionManager()' and the repeated casts to '(SessionImplementor)' and '(TransactionImplementor)' make it verbose and harder to scan. Nesting is minimal, and the reading flow follows a logical sequence of setup, assertions, state changes, and cleanup. However, the intent could be clearer with better naming and abstraction of repeated expressions. Overall, it's understandable but not highly readable.
Run 1
Code Structure: Logically organized into setup, state checks, transaction activation, explicit joining, and cleanup, with blank lines separating phases. Nesting: Flat control flow makes the test easy to follow. Clarity of intent: The test name and assertions clearly communicate explicit transaction joining; the comment explains the otherwise non-obvious getFlushMode() call, though subsequent calls rely on that explanation. Code length: Reasonably concise for the behavior tested, but repeated assertions and long transaction-manager access chains add verbosity. Action granularity: Each statement performs one primary action; chained setup calls and casts slightly increase parsing effort. Reading flow: The chronological progression is natural, although inconsistent assertion ordering across phases, repeated casts, and lengthy expressions mildly interrupt readability.
Run 2
Code Structure: Logically organized into setup, transaction activation, explicit joining, verification, and cleanup, with blank lines separating phases. Nesting: Entirely flat, making execution easy to follow. Clarity of intent: The test name, descriptive API calls, and assertions communicate the behavior under test; the comment explains the otherwise nonobvious getFlushMode() side effect, although later calls rely on remembering it. Code length: Reasonable for the tested lifecycle, but repeated assertions and long transaction-manager access chains add verbosity. Action granularity: Each statement performs one main action, though setup expressions contain several chained calls and casts. Reading flow: The chronological sequence is natural and state transitions are clear, but repeated checks and slightly inconsistent assertion ordering make comparison between phases less effortless.
Run 3
Code Structure: Logically organized into setup, transaction activation, explicit joining, verification, and cleanup, with blank lines separating phases. Nesting: No control-flow nesting, making execution straightforward to follow. Clarity of intent: The test name and assertions clearly convey the behavior under test; the comment explains the otherwise nonobvious getFlushMode() side effect. Code length: Reasonable for a lifecycle test, though repeated assertions and lengthy transaction-manager access chains add verbosity. Action granularity: Each statement performs one primary action, with setup expressions containing several chained operations. Reading flow: The chronological progression is natural, but repeated casts, long lines, and the less obvious markForJoin()/join()/pulse interaction create minor friction.