Sample

int-a47c8b4432e0-I04

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

Matched original source

Lines28

Scores

MethodScoreScale
Posnett0.0070–1; higher is more readable
Scalabrino0.8510–1; higher is more readable
Dorn0.8460–1; higher is more readable
Mi0.6890–1; higher is more readable
LLOC7Logical lines; fewer is more readable
DeepSeek V4 Pro7.330–20; mean of three runs
GPT-6.1 Sol13.670–20; mean of three runs
BTTF0.6950–1; higher is more readable

Views

Source code

package io.netty.example.sctp; import io.netty.channel.ChannelHandler.Sharable; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; /** * Handler implementation for the SCTP echo server. */ @Sharable public class SctpEchoServerHandler extends ChannelInboundHandlerAdapter { @Override public void a(ChannelHandlerContext a, Object b) { a.write(b); } @Override public void b(ChannelHandlerContext c) { c.flush(); } @Override public void c(ChannelHandlerContext d, Throwable e) { // Close the connection when an exception is raised. e.printStackTrace(); d.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.548.833−18.111
Source linesThe number of non-empty source lines.28+11.2
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.602−6.903

Intercept 8.87 + feature contributions = -4.945 (log-odds).
Score = sigmoid(-4.945) = 0.007.

Score0.851

Feature contributions

FeatureValueContribution
(log-odds)
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.73+0.573
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.72.966+0.373
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.079+0.176
Indentation frequencyHow rapidly indentation changes from line to line.25+0.128
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.27.743−0.022
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.29+0.01

Intercept 0.07 + feature contributions = 1.705 (log-odds).
Score = sigmoid(1.705) = 0.846.

Score0.689
Score7
Run 1

The code is nearly unreadable due to meaningless method names ('a', 'b', 'c') and parameter names ('a', 'b', 'c', 'd', 'e') that obscure the intent of each handler method. While the class structure is simple and flat, and each method contains only one or two actions, the lack of descriptive naming destroys clarity. The imports are redundant (Sharable and ChannelInboundHandlerAdapter are already in the same package), adding unnecessary noise. Only the Javadoc and the closing comment provide any hint of purpose. In a real Netty handler, methods should be named channelRead, channelReadComplete, and exceptionCaught to match the framework's intent. Overall, someone reading this code would have to guess what each method does, making it extremely difficult to maintain or debug.

Run 2

The code has a logical structure and follows a recognizable pattern for a Netty handler, with clear class-level documentation. However, readability is severely impacted by poor naming. Methods and parameters use single-letter names (a, b, c, d, e) that obscure their purpose. The methods lack @Override annotations for clarity, and the exception handler suppresses the exception by only printing the stack trace. While the code is concise and flat (no nested blocks), the ambiguous names make it difficult to understand intent without prior knowledge of Netty's ChannelInboundHandlerAdapter contract. Action granularity is good—each method performs a single action. Reading flow is natural if you know the overridden methods, but renaming them to meaningful names like channelRead, channelReadComplete, and exceptionCaught would dramatically improve clarity. The code is short but not self-documenting.

Run 3

The code has a clear class and method structure with minimal nesting, but uses meaningless method names (a, b, c) and parameter names (a, b, c, d, e) that obscure intent. While concise, the naming makes it impossible to understand what each handler method does without deep Netty knowledge. The single comment explains only the exception handler. The structure is logical for a handler class, and each method performs one action, but the poor naming significantly reduces readability. The @Override annotations help indicate these are interface implementations, but the original method names (likely channelRead, channelReadComplete, exceptionCaught) should be used for clarity.

Run 1

Code Structure: The handler is logically organized into three small methods. Nesting: There is no nested control flow, making the code easy to scan. Clarity of intent: The class name, documentation, and API calls suggest an echo server, but single-letter method and parameter names obscure callback roles. The renamed methods also do not match the expected superclass callbacks despite @Override, creating confusion. Code length: The implementation is concise without unnecessary code. Action granularity: Each statement performs one action on its own line. Reading flow: The progression from writing to flushing to exception handling is natural, although ambiguous naming interrupts understanding.

Run 2

Code Structure: The handler is logically organized into three small methods. Nesting: No nested control flow makes it easy to scan. Clarity of intent: The class name and comment establish an SCTP echo server, but method names a, b, c and parameter names a–e obscure event roles and data meaning. These method names also do not match the expected superclass callbacks, making the @Override annotations misleading. Code length: The implementation is concise without unnecessary code. Action granularity: Each statement performs one action on its own line. Reading flow: Writing, flushing, and exception handling form a natural sequence, but opaque naming forces readers to infer behavior from method bodies.

Run 3

Code Structure: The handler is logically organized into three short methods, with a clear class declaration and relevant imports. Nesting: There is no nested control flow, making the code easy to scan. Clarity of intent: The class name, documentation, and write/flush/close calls suggest an echo server, but single-letter method and parameter names obscure callback roles and data meanings. The method names also do not match standard Netty callbacks despite the @Override annotations, creating confusion. Code length: The implementation is concise without unnecessary code. Action granularity: Each statement performs one action, including separate exception reporting and connection closure. Reading flow: The sequence from writing to flushing to exception handling is natural, though meaningful callback and parameter names would substantially improve comprehension.