Sample
int-a2d1d50111c9-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.741 | 0–1; higher is more readable |
| Dorn | 0.678 | 0–1; higher is more readable |
| Mi | 0.654 | 0–1; higher is more readable |
| LLOC | 10 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 5 | 0–20; mean of three runs |
| GPT-6.1 Sol | 13.67 | 0–20; mean of three runs |
| BTTF | 0.596 | 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. | 1027.799 | −33.917 |
| Source linesThe number of non-empty source lines. | 48 | +19.2 |
| Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value. | 5.002 | −7.503 |
Intercept 8.87 + feature contributions = -13.35 (log-odds).
Score = sigmoid(-13.35) = 0.
| Score | 0.741 |
|---|
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. | 49 | −0.699 |
| 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. | 75.959 | +0.448 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 72.857 | +0.371 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 30 | +0.301 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 30 | −0.268 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.07 | +0.262 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 47.727 | +0.257 |
Intercept 0.07 + feature contributions = 0.742 (log-odds).
Score = sigmoid(0.742) = 0.678.
| Score | 0.654 |
|---|
| Score | 10 |
|---|
Run 1
The code structure is fragmented - two separate methods both named with dangerously vague single-letter identifiers ('a', 'b', 'c', 'd', 'e'), which destroys any clarity of intent. There is no obvious reason why the methods or parameters cannot have meaningful names. Method 'a' contains multiple actions packed onto one line (array copy, Kotlin detection, conditional logic) reducing action granularity. The nesting is moderate, but the one-liner conditional combined with an already ambiguous method name makes the flow jarring. The reading flow is unnatural and disorganized; the reader must decode the logic mentally rather than reading it naturally. While the code is concise, it is at the cost of transparency. Code length is good, but readability is severely damaged by the poor naming and compressed logic. Even though the snippet is short, it scores low because every line forces guesswork about the purpose and data flow.
Run 2
The code is severely obfuscated. Method names 'a' and 'b' and parameter names 'a', 'b', 'c', 'd', 'e' reveal no intent, making the logic ambiguous and unreadable. The single-letter identifiers force readers to trace data flow mentally without semantic anchors. Nesting is shallow, but the dense conditional in method 'b' combines multiple checks in one expression. Action granularity is poor — multiple operations occur in the return statement (Kotlin detection, array copy, ternary). Reading flow is disorganized because the core logic is split across two methods with no logical separation. The only readable elements are the Javadoc comments, which ironically describe functionality that the code obscures. Structure is technically present but meaningless due to naming. This appears deliberately renamed or decompiled code rather than maintainable Spring source.
Run 3
The code has some readability issues despite its simple logic. The structure is minimal but the one-letter variable names (a, b, c, d, e) obscure the intent and make the code harder to follow, especially in the overridden method where the logic is dense. Nesting is shallow, which is positive. Action granularity is mostly one action per line, but some lines combine multiple operations (e.g., the Kotlin detector check with array copying). The reading flow is natural in the helper method, but the overridden method's logic is cramped. The Javadoc is helpful but the method names and parameters betray the original Spring source, making the code look obfuscated. Descriptive names and slight refactoring would greatly improve clarity.
Run 1
Code Structure: Logically separates method-aware parameter handling from key generation. Nesting: Shallow overall, with only one nested conditional and clear early returns. Clarity of intent: Class documentation explains the purpose, but single-letter method and variable names obscure roles; the Kotlin-specific argument removal lacks explanation. Code length: Compact without significant redundancy, although documentation occupies much of the snippet. Action granularity: Generally one action per line; the first return combines detection, array copying, and delegation in one expression. Reading flow: Key generation proceeds naturally from empty parameters to a single value and then the general case, but cryptic identifiers and the wrapped ternary interrupt comprehension.
Run 2
Code Structure: Two small methods cleanly separate argument preprocessing from key generation. Nesting: Mostly flat, with early returns and only one nested conditional. Clarity of intent: Documentation explains the purpose, but single-letter method and variable names obscure roles, and the Kotlin-specific argument removal is unexplained. Code length: Concise without substantial redundancy. Action granularity: Most lines perform one action, although the first return combines suspension detection, argument copying, and key generation. Reading flow: The key-generation cases follow a natural progression from zero parameters to one parameter to multiple parameters; however, cryptic identifiers and the wrapped ternary interrupt readability.
Run 3
Code Structure: Two small methods cleanly separate argument preprocessing from key generation. Nesting: Early returns keep nesting shallow, with only one nested conditional. Clarity of intent: Documentation explains key generation well, but single-letter method and variable names obscure roles; the Kotlin-specific argument removal lacks explanation. Code length: The implementation is concise without substantial redundancy. Action granularity: Most statements perform one action, though the first method combines detection, array copying, and delegation in a ternary expression. Reading flow: The empty, single-value, and fallback cases follow a natural progression, but ambiguous names, the wrapped ternary, and extra parentheses interrupt readability.