Sample
int-411b4df0d73b-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.744 | 0–1; higher is more readable |
| Dorn | 0.452 | 0–1; higher is more readable |
| Mi | 0.109 | 0–1; higher is more readable |
| LLOC | 21 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8 | 0–20; mean of three runs |
| GPT-6.1 Sol | 11 | 0–20; mean of three runs |
| BTTF | 0.384 | 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. | 2365.065 | −78.047 |
| Source linesThe number of non-empty source lines. | 61 | +24.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.593 | −6.89 |
Intercept 8.87 + feature contributions = -51.667 (log-odds).
Score = sigmoid(-51.667) = 0.
| Score | 0.744 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 56 | +1.2 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 62 | −1.159 |
| 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. | 110.984 | −1.036 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 110.774 | +0.983 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 56 | −0.864 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 60.884 | +0.441 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.079 | +0.173 |
Intercept 0.07 + feature contributions = -0.192 (log-odds).
Score = sigmoid(-0.192) = 0.452.
| Score | 0.109 |
|---|
| Score | 21 |
|---|
Run 1
The code is severely obfuscated due to cryptic naming (a, b, c, d, e, f, g, h, i, j, k) that obscures intent. It relies on method overloading and type erasure to create tangled control flow. Nesting is moderate but the reflection logic and exception handling are confusing. The code has actions scattered, with multiple concerns per method and unclear return semantics (returning null indicates fallback). Reading flow is poor because the overloaded 'b' method and generic 'C' type hide what the code actually does. While the structure is compact and comments exist, they do not compensate for the lack of self-documenting identifiers. This style may be employed for bytecode size or obfuscation, but it drastically reduces maintainability and clarity.
Run 2
The code structure is logical but readability suffers from poor naming conventions. Methods are named 'a', 'b', and 'c' which convey no meaning about their purpose, violating clarity of intent. Parameters use single-letter names (a, b, c, d, e, f, g, h, i, j, k), making the code difficult to understand without extensive context. Even the method overload for method 'b' has inconsistent parameter names between the declaration and usage. The nested try-catch blocks add moderate complexity. Action granularity is reasonable with one action per line, but the reflection logic with generic type casting reduces readability. The class has good structure with a private constructor and static utility methods, but the obfuscated naming severely hampers understanding. The comment explaining the SocketChannel optimization helps but doesn't compensate for the cryptic method names. This appears to be obfuscated production code, possibly for bytecode size reduction, which inherently trades readability for optimization.
Run 3
The code has several readability issues. Method names (a, b, c) are cryptic and fail to convey intent, making the code difficult to understand without extensive context. There's also method overloading confusion (two b methods) that adds to the ambiguity. The structure contains nested conditionals and exception handling that interrupts flow. However, the code does show some positive aspects: single actions per line, appropriate logging, and a brief comment explaining one workaround. The code is relatively concise and doesn't have excessive nesting. The main detractor is the naming scheme which severely impacts clarity of intent. Better method names describing their actual purpose (like 'findProtocolFamilyMethod' or 'openChannelWithFamily') would dramatically improve readability. The JavaDoc only partially helps since it explains one method's workaround but doesn't clarify the naming.
Run 1
Code Structure: Small, focused utility methods provide logical organization, but overloaded methods with meaningless names obscure their relationships. Nesting: Shallow conditionals and try/catch blocks are easy to follow. Clarity of intent: Imports, types, logging, and documentation suggest the purpose, but single-letter method and variable names make reflection and protocol-family handling difficult to interpret. The catch parameter also reuses the enclosing parameter name 'e', which is invalid Java and adds confusion. Code length: Concise overall, with little unnecessary code. Action granularity: Most lines perform one action, supporting readability. Reading flow: Method delegation is reasonably natural, but inconsistent continuation indentation, compressed import formatting, ambiguous identifiers, and documentation that does not directly explain the reflection helper interrupt comprehension.
Run 2
Code Structure: A small utility class with logically separated reflection lookup, invocation, and protocol-family helpers. Nesting: Shallow conditionals and try/catch blocks keep complexity manageable. Clarity of intent: Single-letter method and parameter names severely obscure purpose; overloaded b methods require tracing types to understand delegation. The documentation helps but does not clearly describe reflective invocation or null-return behavior. Code length: Compact, with little unnecessary code. Action granularity: Most statements perform one action per line, making individual operations easy to follow. Reading flow: Delegation is reasonably organized, but inconsistent continuation indentation and cryptic identifiers interrupt comprehension. Reusing e as both a parameter and catch variable also creates a naming conflict, further reducing clarity.
Run 3
Code Structure: Small, focused utility methods provide logical organization, but opaque names and overloaded b methods obscure relationships. Nesting: Shallow if/try blocks are easy to follow. Clarity of intent: Single-letter method and parameter names substantially hinder understanding; API names, logging, and documentation provide some context, although the comment does not clearly describe the reflective invocation. Code length: Compact with little unnecessary code. Action granularity: Generally one action per line, making individual operations easy to distinguish. Reading flow: The progression from method lookup to invocation and protocol-family wrappers is reasonable, but inconsistent parameter indentation and repeated null-return paths interrupt readability. The catch variable e also conflicts with the enclosing parameter e, introducing a compilation issue and additional confusion.