Sample

int-306301b8f6eb-I04

Replace method, parameter, and local names with deterministic ProGuard-style short identifiers

Matched original source

Lines112

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Scalabrino0.9570–1; higher is more readable
Dorn0.8130–1; higher is more readable
Mi0.880–1; higher is more readable
LLOC45Logical lines; fewer is more readable
DeepSeek V4 Pro3.670–20; mean of three runs
GPT-6.1 Sol120–20; mean of three runs
BTTF0.5520–1; higher is more readable

Views

Source code

package io.netty.buffer; import java.nio.ByteBuffer; /** * Abstract base class for {@link ByteBuf} implementations that wrap another * {@link ByteBuf}. * * @deprecated Do not use. */ @Deprecated public abstract class AbstractDerivedByteBuf extends AbstractByteBuf { protected AbstractDerivedByteBuf(int a) { super(a); } @Override final boolean a() { return b(); } boolean b() { return unwrap().isAccessible(); } @Override public final int c() { return d(); } int d() { return unwrap().refCnt(); } @Override public final ByteBuf e() { return f(); } ByteBuf f() { unwrap().retain(); return this; } @Override public final ByteBuf e(int b) { return f(b); } ByteBuf f(int c) { unwrap().retain(c); return this; } @Override public final ByteBuf g() { return h(); } ByteBuf h() { unwrap().touch(); return this; } @Override public final ByteBuf g(Object d) { return h(d); } ByteBuf h(Object e) { unwrap().touch(e); return this; } @Override public final boolean i() { return j(); } boolean j() { return unwrap().release(); } @Override public final boolean i(int f) { return j(f); } boolean j(int g) { return unwrap().release(g); } @Override public boolean k() { return unwrap().isReadOnly(); } @Override public ByteBuffer l(int h, int i) { return m(h, i); } @Override public ByteBuffer m(int j, int k) { return unwrap().nioBuffer(j, k); } @Override public boolean n() { return unwrap().isContiguous(); } }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(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.

Score0.957

Feature contributions

FeatureValueContribution
(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.

Score0.88
Score45
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.