Sample
int-306301b8f6eb-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.957 | 0–1; higher is more readable |
| Dorn | 0.813 | 0–1; higher is more readable |
| Mi | 0.88 | 0–1; higher is more readable |
| LLOC | 45 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 3.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 12 | 0–20; mean of three runs |
| BTTF | 0.552 | 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. | 2156.447 | −71.163 |
| Source linesThe number of non-empty source lines. | 112 | +44.8 |
| 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.228 | −6.343 |
Intercept 8.87 + feature contributions = -23.835 (log-odds).
Score = sigmoid(-23.835) = 0.
| Score | 0.957 |
|---|
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. | 113 | −2.965 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 88 | +2.307 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 111.623 | +1.15 |
| 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.947 | +0.448 |
| 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. | 67.956 | +0.292 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.121 | −0.231 |
Intercept 0.07 + feature contributions = 1.47 (log-odds).
Score = sigmoid(1.47) = 0.813.
| Score | 0.88 |
|---|
| Score | 45 |
|---|
Run 1
This code is severely obfuscated due to single-letter method names replacing standard, self-documenting names like refCnt(), retain(), release(), nioBuffer(), etc. The cryptic wrapper methods (a, b, c, d...) force readers to constantly trace through multiple layers to understand intent, destroying reading flow and violating 'clarity of intent'. Although the structure is flat and actions are one per line, the extreme indirection makes it effectively unreadable. The deprecation warning suggests this is intentionally legacy/minified code, but from a readability standpoint it fails almost completely. Naming is the primary issue; meaningful method names would dramatically improve comprehension without increasing length or nesting. The abstract class provides minimal documentation for actual behavior. Code length is not the problem—concision here masks meaning rather than aiding it.
Run 2
The code suffers from severe readability issues. Method names are single letters (a, b, c, etc.), which obscures intent and makes the code impossible to understand without external documentation. The structure is repetitive, with many trivial delegation methods that could be consolidated. Nesting is flat, which is good, but action granularity is acceptable. However, the reading flow is completely broken due to cryptic naming. The class is deprecated, but this does not excuse poor clarity. Overall, it is highly unreadable.
Run 3
This code is extremely unreadable due to single-letter method names (a(), b(), c(), etc.) that completely obscure intent. The obfuscated naming appears deliberate, making it impossible to understand what each method does without external documentation. Method pairs like a()/b() and c()/d() suggest some delegation pattern, but the purpose is opaque. The parameter names (a, b, c, d, e, f, g, h, i, j, k) are equally meaningless. While the structure is technically organized and flat with minimal nesting, the clarity of intent is nearly zero. Code length is reasonable, but action granularity is lost because each line's action is unclear. Reading flow is completely disrupted as readers must constantly look up method definitions. Even with the class-level Javadoc explaining this wraps another ByteBuf, the implementation details remain cryptic. This represents an extreme case of poor naming that undermines maintainability.
Run 1
Code Structure: Consistent grouping of overrides and delegation helpers provides logical organization, though extra forwarding layers add indirection. Nesting: Methods are flat, with no nested control flow. Clarity of intent: The class documentation and descriptive calls on unwrap() reveal its wrapper role, but single-letter method and parameter names obscure individual operations and argument meanings. Code length: Individual methods are concise, yet repetitive forwarding pairs lengthen the class and require additional navigation. Action granularity: Each statement performs one action, with mutations and returns clearly separated. Reading flow: Formatting and repeated patterns are predictable, but tracing cryptically named forwarding methods interrupts comprehension.
Run 2
Code Structure: Methods are consistently organized into delegation pairs, but the extra forwarding layer adds indirection. Nesting: No nested control flow; all methods are flat and easy to scan. Clarity of intent: The class documentation explains its wrapping role, and underlying calls reveal behavior, but single-letter method and parameter names obscure semantics and argument meanings. Code length: Individual methods are concise, although repetitive wrappers lengthen the class. Action granularity: Each statement performs one clear action, with mutations and returns on separate lines. Reading flow: Consistent formatting and predictable method ordering help navigation, but understanding each public method often requires following another ambiguously named method. Overall, the code is structurally clean but substantially weakened by uninformative naming and repetitive indirection.
Run 3
Code Structure: Methods are consistently organized into delegation pairs, though extra forwarding layers add indirection. Nesting: Entirely flat, with no complex control flow. Clarity of intent: The class documentation and underlying ByteBuf calls explain its general purpose, but single-letter method and parameter names obscure individual operations and argument meanings. Code length: Individual methods are concise, although repeated forwarding pairs make the class longer and more cumbersome to navigate. Action granularity: Each statement performs one clear action, with mutations and returns on separate lines. Reading flow: Consistent formatting and grouping support scanning, but understanding public methods requires following ambiguously named helpers. Overall, strong structural simplicity is substantially weakened by uninformative naming.