Sample
Schnappinger/diarymanagement/TBA.Messages.LogoutResponse
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 1 | 0–1; higher is more readable | 96.0Δ 2.7 |
| Scalabrino | 0.96 | 0–1; higher is more readable | 99.3Δ 0.6 |
| Dorn | 0.82 | 0–1; higher is more readable | 88.1Δ 10.6 |
| Mi | 0.716 | 0–1; higher is more readable | 86.1Δ 12.5 |
| LLOC | 6 | Logical lines; fewer is more readable | 79.7Δ 19.0 |
| DeepSeek V4 Pro | 14.33 | 0–20; mean of three runs | 32.3Δ 66.3 |
| GPT-6.1 Sol | 16 | 0–20; mean of three runs | 38.9Δ 59.7 |
| BTTF | 0.767 | 0–1; higher is more readable | 92.4Δ 6.3 |
| Human | 4 | 1–4; original rating | 98.7 |
Views
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Source linesThe number of non-empty source lines. | 57 | +22.8 |
| Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones. | 335.201 | −11.062 |
| 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.709 | −7.063 |
Intercept 8.87 + feature contributions = 13.545 (log-odds).
Score = sigmoid(13.545) = 1.
| Score | 0.96 |
|---|
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. | 56 | −0.946 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.022 | +0.731 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 80 | +0.486 |
| 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. | 55.691 | +0.369 |
| 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. | 79.947 | +0.279 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 25 | +0.128 |
Intercept 0.07 + feature contributions = 1.514 (log-odds).
Score = sigmoid(1.514) = 0.82.
| Score | 0.716 |
|---|
| Score | 6 |
|---|
Run 1
The code is generally readable but has several issues. Structure is clear with a simple class extending ResponseMessage, and nesting is nonexistent. Intention is mostly comprehensible but muddled by misleading documentation - the Get() method claims to 'Get the LOGOUT message' while accepting an unused dummy parameter, and Set() returns null despite documentation suggesting otherwise. The code is concise but contains unnecessary verbosity in Javadoc with redundant @see and @param tags. Action granularity is good with one operation per line, and reading flow is natural due to logical method ordering and consistent formatting. However, the dummy parameter and null return create ambiguity about actual purpose. The code would benefit from clearer method names, removal of deceptive documentation, and more meaningful parameter handling. Overall, it's readable Java code but lacks precision in intent and documentation accuracy.
Run 2
The code is moderately readable due to its short length, flat structure, and low nesting. Intent is clear for basic getter/setter overrides, but the implementation introduces ambiguity: the parameter is named 'dummy', magic strings are used, and the Set method discards the processed message by returning null. Javadoc comments are verbose and repetitive, inflating length without adding practical value. The reading flow is disrupted by inconsistent exception declarations and unclear documentation, making the code appear more complex than necessary. The class's actual purpose—handling logout response messages—is not evident from the implementation, which simply delegates to the superclass. This obscures the functional value and reduces overall clarity despite the logical organization.
Run 3
The code is well-structured with clear class inheritance, logical organization, and minimal nesting. Each method has a single clear purpose, and the action granularity is appropriate — one main action per line. The reading flow is natural, with Javadoc comments explaining intent. However, the code length is slightly excessive due to verbose Javadoc comments that repeat information already implied by method names and overrides. The Set() method returns null after calling super.Set(), which may be unclear without deeper context. Minor ambiguity in the dummy parameter purpose also slightly reduces clarity. Overall, readable but could be more concise.
Run 1
Code Structure: The class is logically organized into a constructor and two small overrides. Nesting: There is no nested control flow, making it easy to scan. Clarity of intent: The class purpose is clear, but Get ignores its dummy parameter, while Set assigns a superclass result and then returns null. The Set documentation describes a query rather than a response and promises a return value inconsistent with the implementation. Code length: The implementation is concise, but extensive boilerplate documentation adds unnecessary reading. Action granularity: Statements generally perform one action per line. Reading flow: Consistent formatting and simple delegation support natural reading, although nonstandard capitalized method names, redundant comments, and misleading documentation reduce readability.
Run 2
Code Structure: The class is logically organized into a constructor and two short overrides. Nesting: There is no nested control flow, making the implementation easy to scan. Clarity of intent: The logout-response purpose is clear, but capitalized Get/Set names, an ignored dummy parameter, and Set returning null after assigning a superclass result obscure method behavior. Documentation also inconsistently refers to a Logout Query. Code length: Executable code is concise, although extensive boilerplate Javadoc adds disproportionate length. Action granularity: Each statement performs one action, with no compressed multi-action lines. Reading flow: Consistent formatting and straightforward delegation support natural reading, but repetitive comments and the unexplained null return interrupt understanding.
Run 3
Code Structure: The class is logically organized into a constructor and two small overrides. Nesting: There is no nested control flow, making the implementation easy to scan. Clarity of intent: The logout-response purpose is clear, but Get/Set names are generic, the dummy parameter is awkward, and Set returns null despite documentation promising a message without its header. Its assignment to message is also unused afterward. Code length: Executable code is concise, but extensive Javadoc and an unnecessary explicit empty constructor add clutter. Action granularity: Each statement performs a single action. Reading flow: Consistent formatting and straightforward delegation support natural reading, though inaccurate documentation referring to a Logout Query and nonstandard Java capitalization reduce clarity.