Sample

int-ac9bbc2ffe44-I12

Inline all eligible single-use intermediate local variables

Matched original source

Lines55

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Scalabrino0.570–1; higher is more readable
Dorn0.2710–1; higher is more readable
Mi0.4940–1; higher is more readable
LLOC24Logical lines; fewer is more readable
DeepSeek V4 Pro170–20; mean of three runs
GPT-6.1 Sol170–20; mean of three runs
BTTF0.5160–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 channelRead0(ChannelHandlerContext ctx, HttpObject msg) { if (msg instanceof HttpResponse) { HttpResponse response = (HttpResponse) msg; System.err.println("STATUS: " + response.status()); System.err.println("VERSION: " + response.protocolVersion()); System.err.println(); if (!response.headers().isEmpty()) { for (CharSequence name: response.headers().names()) { for (CharSequence value: response.headers().getAll(name)) { System.err.println("HEADER: " + name + " = " + value); } } System.err.println(); } if (HttpUtil.isTransferEncodingChunked(response)) { System.err.println("CHUNKED CONTENT {"); } else { System.err.println("CONTENT {"); } } if (msg instanceof HttpContent) { HttpContent content = (HttpContent) msg; System.err.print(content.content().toString(CharsetUtil.UTF_8)); System.err.flush(); if (content instanceof LastHttpContent) { System.err.println("} END OF CONTENT"); ctx.close(); } } } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { cause.printStackTrace(); ctx.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.492−6.738

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

Score0.57

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.907+0.358
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.107−0.095
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.911+0.069

Intercept 0.07 + feature contributions = -0.989 (log-odds).
Score = sigmoid(-0.989) = 0.271.

Score0.494
Score24
Run 1

The code is well-structured with clear separation of concerns and logical organization. It handles HTTP responses and content in flat, easily readable blocks with minimal nesting. Intent is clear from descriptive method and variable names. The code is concise and avoids unnecessary length. Each line generally performs one action, contributing to readability. The reading flow is natural, following the HTTP message processing sequence. Minor improvements could include extracting repeated System.err.println calls or using string formatting, but overall the code is highly readable for a Netty handler implementation.

Run 2

The code is generally well-structured, with clear separation between HttpResponse and HttpContent handling. Nesting is minimal (two nested loops for headers only), and each line performs one logical action. Variable names and type checks are intuitive, making intent straightforward. The only minor drawbacks are the use of empty println for formatting (slightly ambiguous), a slightly long else block for printing content type, and that the balance of braces in header printing could be visually clearer. Overall, it is concise, readable, and maintains a natural top-down flow, with no major logical tangles.

Run 3

The code demonstrates good readability with clear structure and intent. It uses a flat, logical organization within the channelRead0 method, handling HttpResponse and HttpContent separately. Nesting is minimal, limited to two levels for header iteration. Action granularity is appropriate, with one action per line. Variable names are descriptive (response, content, name, value). The code is concise and avoids unnecessary complexity. Minor improvements could include using a logger instead of System.err, extracting the header printing logic into a helper method, or adding brief comments to clarify the protocol-handling flow. However, the code remains highly readable due to its straightforward flow and clear separation of concerns between response handling and content processing.

Run 1

Code Structure: Logically separates response metadata, content handling, and exception handling. Nesting: Mostly shallow, though header printing reaches four control-flow levels through conditionals and nested loops. Clarity of intent: Descriptive types, variable names, and output labels clearly convey HTTP response logging; independent response and content checks accommodate objects implementing both interfaces. Code length: Compact and appropriate, with minor repetition in printing statements. Action granularity: Each statement performs one action, making execution easy to follow. Reading flow: Proceeds naturally from status and headers to body content and connection closure. Minor formatting inconsistencies and the nested header traversal slightly reduce readability.

Run 2

Code Structure: Well organized into message processing and exception handling, with distinct response and content sections. Nesting: Mostly shallow, though header printing uses nested loops within two conditionals. Clarity of intent: Descriptive class, method, and variable names plus explicit output labels make the HTTP logging purpose clear. Code length: Compact and appropriate, with little unnecessary code; header printing could optionally be extracted for easier scanning. Action granularity: Each statement performs a focused action on its own line. Reading flow: Processing follows a natural sequence from status and headers to content and connection closure. Separate response and content checks appropriately allow a message to satisfy both types, although this behavior may not be immediately obvious to readers unfamiliar with Netty.

Run 3

Code Structure: Logically separates response metadata, content processing, and exception handling. Nesting: Mostly shallow, although header printing reaches four nested control-flow levels. Clarity of intent: Descriptive class, method, and variable names, plus explicit output labels, make the diagnostic purpose clear. Code length: Compact and appropriate for a small handler, with only minor repetition in printing. Action granularity: Each statement performs a single action on its own line. Reading flow: Metadata precedes content, and completion closes the channel naturally; whitespace separates related operations. Extracting header printing into a helper and briefly explaining the independent response/content checks would further improve readability.