Sample
int-c6348af810ea-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.884 | 0–1; higher is more readable |
| Dorn | 0.847 | 0–1; higher is more readable |
| Mi | 0.529 | 0–1; higher is more readable |
| LLOC | 21 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 7 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14.67 | 0–20; mean of three runs |
| BTTF | 0.517 | 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. | 1890 | −62.37 |
| Source linesThe number of non-empty source lines. | 115 | +46 |
| 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.87 | −7.304 |
Intercept 8.87 + feature contributions = -14.804 (log-odds).
Score = sigmoid(-14.804) = 0.
| Score | 0.884 |
|---|
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. | 109 | −2.823 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 72 | +1.753 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 114.635 | +1.193 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 83.267 | +0.539 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.048 | +0.474 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| 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. | 83.957 | +0.109 |
Intercept 0.07 + feature contributions = 1.713 (log-odds).
Score = sigmoid(1.713) = 0.847.
| Score | 0.529 |
|---|
| Score | 21 |
|---|
Run 1
While the code has a clear class structure and documentation, readability is severely compromised. The most significant issue is the use of meaningless, single-letter variable names (a, b, c, d, e, f, etc.) for constructor parameters and method names (a(), b(), c()), which obscures intent and violates clarity. Despite the Javadocs describing the parameters, the code itself is ambiguous. The action granularity is acceptable, and nesting is minimal, but the reading flow is disrupted by these opaque names. The code length is reasonable for an exception class with multiple constructors. Overall, the structure and documentation are good, but the naming choices drastically reduce readability.
Run 2
The code structure is logically organized as an exception hierarchy class, but readability is severely impacted by poor variable naming (a, b, c, d, e, f, g, h, i, j, k, l, m, n) and method names (a(), b(), c()) that completely obscure the intent. This appears to be deliberately obfuscated code masquerading as Spring source. The Javadoc comments provide clear documentation, but they do not match the actual parameter names, creating a disconnect between documentation and implementation. While nesting is flat and action granularity is generally one action per line, the reading flow is unnatural because readers must constantly map meaningless names to their documented purposes. The class has reasonable length and structure, but the naming choices render it nearly unreadable despite clean formatting.
Run 3
The code has good structure and flat nesting, but readability is seriously undermined by meaningless parameter names (a, b, c, d, e, f, g, h, i, j, k, l, m, n) and method names (a(), b(), c()). While the Javadoc comments clarify intent, the names contradict the documented purpose, making the code ambiguous. Action granularity is mostly one action per line, and reading flow is natural due to sequential constructors and getters. However, the unnamed parameters make it difficult to understand what each constructor expects without reading documentation. Code length is appropriate but slightly verbose due to overloaded constructors. The class-level Javadoc is clear, but the implementation fails to maintain clarity through proper naming conventions.
Run 1
Code Structure: Logically organized into fields, constructor overloads, and accessors, with consistent formatting. Nesting: Very shallow; a single conditional and straightforward ternaries are easy to follow. Clarity of intent: The class name, field names, and documentation explain the purpose, but single-letter parameters and accessor names obscure meaning. Javadoc parameter names do not match actual parameters, further reducing clarity. Code length: Methods are concise and constructor delegation avoids redundant initialization, although repeated documentation and similar overloads add length. Action granularity: Each statement performs one clear action, with no crowded multi-statement lines. Reading flow: The progression from initialization to retrieval is natural, but readers must repeatedly consult documentation to interpret anonymous-looking names.
Run 2
Code Structure: Fields, related constructor overloads, and accessors are logically grouped, with constructor delegation avoiding duplicated initialization. Nesting: Very shallow; only one simple conditional appears. Clarity of intent: The class name, descriptive fields, and documentation explain the purpose, but single-letter parameters and accessor names obscure meaning. Javadoc parameter names also fail to match actual signatures, making the documentation misleading. Code length: Implementations are concise, although repeated constructor documentation and extra blank lines add bulk. Action granularity: Each statement performs one clear action; wrapped constructor calls remain understandable. Reading flow: Consistent formatting and predictable organization support easy scanning, but readers must repeatedly infer what anonymous parameters and methods represent.
Run 3
Code Structure: Fields, overloaded constructors, and accessors are logically grouped, with constructor delegation reducing duplication. Nesting: Very shallow; only one simple conditional appears. Clarity of intent: The class name, field names, and documentation explain the purpose, but single-letter parameters and accessor names obscure meaning. Javadoc parameter names also do not match actual signatures, making documentation misleading. Code length: Implementation is concise, though repeated constructor documentation and message construction add some bulk. Action granularity: Each statement performs one clear action; assignments and delegation are cleanly separated. Reading flow: Consistent formatting and predictable organization support easy reading, but cryptic names force readers to consult documentation and infer parameter roles.