Sample
int-6496ea68b3f3-I04
Replace method, parameter, and local names with deterministic ProGuard-style short identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.869 | 0–1; higher is more readable |
| Dorn | 0.825 | 0–1; higher is more readable |
| Mi | 0.575 | 0–1; higher is more readable |
| LLOC | 13 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 6.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14.33 | 0–20; mean of three runs |
| BTTF | 0.597 | 0–1; higher is more readable |
Views
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. | 1111.713 | −36.687 |
| Source linesThe number of non-empty source lines. | 54 | +21.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.981 | −7.472 |
Intercept 8.87 + feature contributions = -13.689 (log-odds).
Score = sigmoid(-13.689) = 0.
| Score | 0.869 |
|---|
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. | 55 | −0.911 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 39 | +0.612 |
| 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. | 73.982 | +0.532 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 72.6 | +0.367 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 53.653 | +0.34 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.082 | +0.142 |
Intercept 0.07 + feature contributions = 1.549 (log-odds).
Score = sigmoid(1.549) = 0.825.
| Score | 0.575 |
|---|
| Score | 13 |
|---|
Run 1
This code exhibits extremely poor readability due to meaningless naming (a, b, c, d, a()), which obscures the intent of both methods and variables. The code structure is somewhat modular, but the obfuscated identifiers negate any structural clarity. Nesting is shallow, which is good, but the action granularity is inconsistent—mixing null checks and assertions across multiple lines without clear grouping. The reading flow is disorganized because method names and parameters provide no semantic cues, forcing readers to parse comments and infer behavior. While the code is concise and avoids unnecessary length, the deliberate or accidental use of cryptic names makes it effectively unreadable. Clarity of intent suffers severely; only the comments and method signatures hint at the purpose. Overall, the code fails to communicate its logic efficiently, making maintenance and review unnecessarily challenging.
Run 2
The code has several significant readability issues. Method and variable names are meaningless: 'a' is used for both a Matcher parameter and a method name, 'b' and 'd' for ModelAndView, and 'c' for a String. This completely obscures the intent, despite the Javadoc explaining what the methods should do. The structure is otherwise logical and flat, with simple one-action-per-line statements, but the naming destroys clarity of intent and reading flow. The protected constructor with a comment is acceptable. The use of Hamcrest matchers and assertions is standard. However, the cryptic naming alone drops the score dramatically. The code length is concise, and nesting is minimal, but these positive aspects are nullified by the ambiguous identifiers.
Run 3
The code is structurally organized with clear package, imports, and documentation, but method and variable names are deliberately obfuscated ('a', 'b', 'c', 'd'), making the intent ambiguous. Nesting is low, with simple lambda bodies and no deep control flow. Code length is concise but at the cost of clarity. Action granularity is mostly one action per line, though some lines combine assertion calls with multiple arguments. Reading flow is natural at the class level but becomes confusing inside methods due to meaningless parameter names. The use of Hamcrest and Spring test utilities is appropriate, but the overall readability suffers primarily from poor naming choices that obscure purpose despite otherwise clean formatting.
Run 1
Code Structure: The class is logically organized into a constructor and two closely related assertion overloads. Nesting: Lambda bodies contain only one shallow conditional, making control flow easy to follow. Clarity of intent: Javadoc, assertion messages, and framework calls explain the purpose, but method name 'a' and variables 'a', 'b', 'c', and 'd' obscure meaning and distinguish the overloads poorly. Code length: The implementation is concise, with minor duplication of ModelAndView retrieval and null checking. Action granularity: Each statement performs a single clear action. Reading flow: Both methods follow the same natural retrieve-check-assert sequence, though compressed import formatting, extra blank lines, and cryptic identifiers reduce readability.
Run 2
Code Structure: The class is logically organized into a constructor and two related assertion overloads. Nesting: Lambda bodies contain only a single shallow conditional, keeping complexity low. Clarity of intent: Javadoc, assertion messages, and framework types explain the purpose, but method name 'a' and variables 'a', 'b', 'c', and 'd' obscure meaning and distinguishability. Code length: The implementation is concise; duplicated null checks are minor and reasonable for two short methods. Action granularity: Each statement performs one clear action, with no compressed multi-action lines. Reading flow: Both methods follow a natural retrieve-check-assert sequence, although missing spacing around import groups and arbitrary identifiers reduce scanability.
Run 3
Code Structure: The class is logically organized, with a constructor and two related assertion overloads. Nesting: Lambda bodies contain only a single conditional, keeping nesting shallow. Clarity of intent: Javadoc, assertion messages, and framework calls explain the purpose, but method name 'a' and variables 'a', 'b', 'c', and 'd' obscure meaning significantly. Code length: The implementation is concise; duplicated null checks are minor and understandable. Action granularity: Each statement performs one clear action, with no compressed multi-action lines. Reading flow: Both methods follow a natural retrieve-check-assert sequence, though poor naming and limited separation around imports reduce readability.