Sample
int-0d620f550629-I04
Replace method, parameter, and local names with deterministic ProGuard-style short identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.013 | 0–1; higher is more readable |
| Scalabrino | 0.927 | 0–1; higher is more readable |
| Dorn | 0.814 | 0–1; higher is more readable |
| Mi | 0.616 | 0–1; higher is more readable |
| LLOC | 27 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 6.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 12 | 0–20; mean of three runs |
| BTTF | 0.266 | 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. | 1825.998 | −60.258 |
| Source linesThe number of non-empty source lines. | 136 | +54.4 |
| 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.91 | −7.365 |
Intercept 8.87 + feature contributions = -4.353 (log-odds).
Score = sigmoid(-4.353) = 0.013.
| Score | 0.927 |
|---|
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. | 137 | −3.814 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 82 | +2.099 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 135.89 | +1.49 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 80.92 | +0.501 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.046 | +0.498 |
| 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. | 80.942 | +0.237 |
Intercept 0.07 + feature contributions = 1.479 (log-odds).
Score = sigmoid(1.479) = 0.814.
| Score | 0.616 |
|---|
| Score | 27 |
|---|
Run 1
The code has a logical structure with clear sections for constructors, setters, and overridden methods, and the javadoc comments are thorough. However, readability is severely hindered by poorly named methods (a, b, c, d, e) and parameters (a, b, c, d, e, f, g). The nested synchronized block adds some complexity but is mitigated by only having one level of nesting. The intent of methods is obscured by these non-descriptive names despite the comments. The code is relatively concise but uses unconventional formatting. Each line generally contains one action, and the flow progresses logically, but the naming makes it read like obfuscated code. The class would score higher with proper method and parameter names, as the comments suggest these are setPattern, setPatterns, getPointcut, createPointcut, and toString methods.
Run 2
The code has severe readability problems primarily due to obfuscated method names (a, b, c, d, e) that completely obscure intent. What should be setPattern, setPatterns, getPointcut, createPointcut, and toString are replaced with meaningless single letters. Parameter names (a, b, c, d, e, f, g) follow the same anti-pattern. This forces readers to rely on comments to understand purpose. The structure itself is logical and nesting is minimal, but clarity of intent is critically damaged. Action granularity is mostly fine, with one action per line. Javadoc comments are comprehensive, which helps, but the contradiction between documentation and code identifiers creates cognitive friction. The synchronized block is straightforward, and the class organization follows Spring conventions. However, the naming alone drops readability dramatically—a reader cannot understand what any method does without reading documentation or implementation details.
Run 3
The code is virtually unreadable due to deliberate obfuscation of all method names (a, b, c, d, e), parameters (a, b, c, d, e, f, g), and fields. While the class-level Javadoc is intact, the method-level documentation now describes methods that no longer exist by name. The original intent is completely obscured, requiring external knowledge to determine what each method does. Although the overall structure and nesting are acceptable and inherited from the original Spring code, the arbitrary renaming destroys clarity of intent, action granularity, and natural reading flow. The 'score' of 0 reflects that the code is functionally illegible without extreme effort.
Run 1
Code Structure: Fields, constructors, configuration methods, lazy initialization, and a helper class are logically organized. Nesting: Mostly flat, although synchronized initialization contains two nested conditionals; this remains manageable. Clarity of intent: Descriptive class and field names and substantial documentation help, but single-letter method and parameter names obscure operations. Documentation references names such as setPattern and createPointcut that do not match the declared methods, further confusing navigation. Code length: Implementation methods are concise; comments and whitespace add length but generally provide useful context. Action granularity: Statements largely perform one action per line, with only a conventional multiline string expression. Reading flow: Consistent formatting and grouping support scanning, but calls such as a(b), b(d), and d() force readers to repeatedly consult definitions to understand behavior.
Run 2
Code Structure: Fields, constructors, configuration methods, lazy initialization, and the monitor class are logically organized. Nesting: Mostly shallow, though lazy initialization has three nested control blocks. Clarity of intent: Descriptive field names and explanatory comments help, but single-letter method and parameter names obscure purpose. Documentation references original names such as setPattern and createPointcut that do not match the declared methods, reducing trust and forcing readers to infer mappings. Code length: Implementation is concise; extensive documentation and whitespace add length but mostly aid navigation. Action granularity: Statements generally perform one action per line, with straightforward constructor delegation and assignments. Reading flow: Conventional class layout supports top-to-bottom reading, but opaque calls such as a(b), b(d), and d() interrupt comprehension and make readers repeatedly consult method bodies.
Run 3
Code Structure: Fields, constructors, configuration methods, lazy initialization, and the monitor class are logically grouped. Nesting: Mostly flat, with moderate nesting in the synchronized initialization block. Clarity of intent: Descriptive class and field names and explanatory comments help, but single-letter method and parameter names obscure purpose. Documentation references names such as setPattern, setPatterns, and createPointcut that do not match the declared methods, making navigation confusing. Code length: Implementations are concise; documentation adds useful context but some repetition. Action granularity: Statements generally perform one action per line, with no compressed multi-action statements. Reading flow: Consistent formatting and conventional ordering support scanning, but calls such as a(b), b(d), and d() force readers to consult definitions repeatedly. Overall, sound organization is substantially weakened by ambiguous naming and inconsistent documentation.