Sample

int-7621d1432f0d-I04

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

Matched original source

Lines55

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Scalabrino0.6560–1; higher is more readable
Dorn0.2550–1; higher is more readable
Mi0.6290–1; higher is more readable
LLOC24Logical lines; fewer is more readable
DeepSeek V4 Pro70–20; mean of three runs
GPT-6.1 Sol130–20; mean of three runs
BTTF0.4080–1; higher is more readable

Views

Source code

package io.netty.example.http.snoop; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.HttpContent; import io.netty.handler.codec.http.HttpUtil; import io.netty.handler.codec.http.HttpObject; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.LastHttpContent; import io.netty.util.CharsetUtil; public class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> { @Override public void a(ChannelHandlerContext a, HttpObject b) { if (b instanceof HttpResponse) { HttpResponse c = (HttpResponse) b; System.err.println("STATUS: " + c.status()); System.err.println("VERSION: " + c.protocolVersion()); System.err.println(); if (!c.headers().isEmpty()) { for (CharSequence d: c.headers().names()) { for (CharSequence e: c.headers().getAll(d)) { System.err.println("HEADER: " + d + " = " + e); } } System.err.println(); } if (HttpUtil.isTransferEncodingChunked(c)) { System.err.println("CHUNKED CONTENT {"); } else { System.err.println("CONTENT {"); } } if (b instanceof HttpContent) { HttpContent f = (HttpContent) b; System.err.print(f.content().toString(CharsetUtil.UTF_8)); System.err.flush(); if (f instanceof LastHttpContent) { System.err.println("} END OF CONTENT"); a.close(); } } } @Override public void b(ChannelHandlerContext g, Throwable h) { h.printStackTrace(); g.close(); } }

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.2355.469−77.73
Source linesThe number of non-empty source lines.55+22
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.459−6.689

Intercept 8.87 + feature contributions = -53.55 (log-odds).
Score = sigmoid(-53.55) = 0.

Score0.656

Feature contributions

FeatureValueContribution
(log-odds)
Indentation frequencyHow rapidly indentation changes from line to line.55+1.165
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.55−0.911
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.55−0.841
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.54.919+0.358
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.115−0.173
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.84.964+0.066

Intercept 0.07 + feature contributions = -1.07 (log-odds).
Score = sigmoid(-1.07) = 0.255.

Score0.629
Score24
Run 1

The code has several major readability issues. Method names 'a' and 'b' are completely meaningless, violating clarity of intent. Variable names like 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' provide zero semantic information about their purpose. The deeply nested loops (two levels) for header iteration increase complexity. Multiple actions are combined within single if blocks, and reading flow is disrupted by poor naming throughout. While the code has reasonable structure with logical separation of concerns (HTTP response handling vs content handling), this is undermined by obscure naming. The action granularity is acceptable, with each statement on its own line, but the overall readability is severely compromised by the naming conventions that appear to be deliberately obfuscated for a code golfing challenge rather than production-quality code.

Run 2

The code is functionally simple but suffers from poor readability. Method names 'a' and 'b' are cryptic, violating clarity of intent. Parameters like 'a', 'b', 'c' obscure meaning. The logic is not deeply nested, but there is a hidden dual-purpose structure: the handler checks for HttpResponse and HttpContent in sequence without an else, which hurts reading flow. Some actions are grouped per line, but overall structure is logical. However, the lack of descriptive naming and method purpose makes the code ambiguous and hard to maintain.

Run 3

The code suffers from poor naming (method parameters like 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'), which severely obscures intent. Methods are named 'a' and 'b' instead of meaningful names like 'channelRead0' and 'exceptionCaught'. The logic is somewhat structured but the cryptic names make it hard to follow. Nesting is moderate—two levels deep in loops—but the flat if-blocks help readability. Action granularity is acceptable, with one main action per line. Reading flow is disrupted by unclear variable names, forcing the reader to trace types manually. While the code is concise, the lack of descriptive names for methods and parameters makes it unnecessarily difficult to understand. The code would be significantly more readable with proper naming conventions and possibly extracting nested logic into helper methods.

Run 1

Code Structure: Response metadata, content handling, and error handling are logically separated. Nesting: Mostly moderate, but the header section nests two loops inside two conditionals, increasing reading effort. Clarity of intent: HTTP types and output labels reveal the purpose, but single-letter method and variable names obscure roles and handler intent. Code length: Compact and largely necessary, with little redundant logic. Action granularity: Each statement performs one clear action, making execution easy to follow. Reading flow: Processing proceeds naturally from response metadata to body content and connection closure; spacing helps distinguish stages. However, cryptic naming and nested header traversal prevent the code from being highly readable.

Run 2

Code Structure: Logically separates response metadata, content handling, and exception handling, although descriptive helper methods could improve organization. Nesting: Mostly shallow, but header processing reaches four nested control-flow levels. Clarity of intent: HTTP types and output messages reveal the purpose, while single-letter method and variable names significantly obscure meaning. Code length: Compact and reasonably proportional to its functionality, with little unnecessary code. Action granularity: Each statement generally performs one action, making operations easy to follow. Reading flow: Processing progresses naturally from status and headers to body content and closure, with useful whitespace separating stages. Overall, the straightforward structure is readable, but opaque naming and the nested header loops reduce clarity.

Run 3

Code Structure: Response metadata, content handling, and exception handling are logically separated. Nesting: Mostly shallow, though header printing reaches three nested levels. Clarity of intent: HTTP types and output labels reveal the purpose, but single-letter method and variable names obscure roles and make the overrides harder to understand. Code length: Compact and proportionate to its functionality, with minor repetition in printing. Action granularity: Each statement performs one clear action, without compound lines. Reading flow: Processing naturally moves from status and headers to content and connection closure; whitespace supports scanning, but poor naming interrupts comprehension.