Sample

int-08831481cfa6-I04

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

Matched original source

Lines61

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Scalabrino0.8380–1; higher is more readable
Dorn0.7410–1; higher is more readable
Mi0.0490–1; higher is more readable
LLOC26Logical lines; fewer is more readable
DeepSeek V4 Pro40–20; mean of three runs
GPT-6.1 Sol13.670–20; mean of three runs
BTTF0.5610–1; higher is more readable

Views

Source code

package io.netty.channel.uring; final class RingBuffer { private final SubmissionQueue ioUringSubmissionQueue; private final CompletionQueue ioUringCompletionQueue; private final int features; private boolean closed; RingBuffer(SubmissionQueue a, CompletionQueue b, int c) { this.ioUringSubmissionQueue = a; this.ioUringCompletionQueue = b; this.features = c; } /** * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and * {@link SubmissionQueue#submitAndWait()}. */ void a() { // We create our ring in disabled mode and so need to enable it first. Native.ioUringRegisterEnableRings(b()); // Now also register the ring filedescriptor itself. This needs to happen in the same thread // that will also call the io_uring_enter(...) ioUringSubmissionQueue.tryRegisterRingFd(); } int b() { return ioUringCompletionQueue.ringFd; } int c() { return features; } SubmissionQueue d() { return this.ioUringSubmissionQueue; } CompletionQueue e() { return this.ioUringCompletionQueue; } void f() { if (closed) { return; } closed = true; ioUringSubmissionQueue.close(); ioUringCompletionQueue.close(); Native.ioUringExit( ioUringSubmissionQueue.submissionQueueArrayAddress(), ioUringSubmissionQueue.ringEntries, ioUringSubmissionQueue.ringAddress, ioUringSubmissionQueue.ringSize, ioUringCompletionQueue.ringAddress, ioUringCompletionQueue.ringSize, ioUringSubmissionQueue.ringFd, ioUringSubmissionQueue.enterRingFd); } }

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.1088.699−35.927
Source linesThe number of non-empty source lines.61+24.4
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.331−6.496

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

Score0.838

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.119−1.375
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.62−1.159
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.119+1.116
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.60.933+0.442
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.056+0.395

Intercept 0.07 + feature contributions = 1.051 (log-odds).
Score = sigmoid(1.051) = 0.741.

Score0.049
Score26
Run 1

The code suffers from severely obfuscated naming: methods and parameters are single letters (a, b, c, d, e, f), which destroys clarity of intent and reading flow. While the structure is logically organized with a clear constructor and separation of concerns, the action granularity is mixed — some lines perform multiple operations but are not excessively packed. Nesting is flat and acceptable, but code length is slightly redundant due to accessor methods with unclear names. The comments provide some context but cannot compensate for the cryptic identifiers. Overall, the logic is understandable by domain experts, but the naming strategy makes it nearly unreadable for general evaluation. Score is low, not because of structural issues, but because the reader must constantly infer or memorize what each letter means, violating basic readability principles.

Run 2

The code exhibits severe readability issues. Method names (a, b, c, d, e, f) and parameter names (a, b, c) are meaningless, obscuring intent. While the structure is linear and flat, the complete lack of descriptive identifiers makes it extremely difficult to follow. There are also inconsistencies: 'a()' calls Native.ioUringRegisterEnableRings(b()) but 'b()' returns the completion queue's ring fd, which is ambiguous. 'f()' mixes multiple operations (close, exit) with multiple parameters, violating action granularity. The only clarity comes from comments, but they don't compensate for the cryptic naming. The code is concise but at the cost of total opacity. Reading flow is broken because every usage requires cross-referencing to understand what method or variable is being referenced.

Run 3

This code suffers from severely obfuscated naming (methods a, b, c, d, e, f; parameters a, b, c) which destroys clarity of intent and reading flow. While the class structure is logical and nesting is minimal, the single-letter identifiers force readers to constantly cross-reference the constructor and fields to understand even basic functionality. The code length is appropriate and action granularity is mostly one operation per line, but the naming completely undermines readability. The comments provide some context for method 'a', but the method names themselves convey no semantic meaning. This appears to be intentionally obfuscated code, possibly from decompilation or deliberate minification, rather than source code meant for human consumption. For production code, clear method names like 'enableRing', 'getRingFd', 'getFeatures', 'getSubmissionQueue', 'getCompletionQueue', and 'close' would be essential.

Run 1

Code Structure: Fields, initialization, accessors, and lifecycle operations are logically organized into small methods. Nesting: Minimal nesting; the early return in cleanup keeps control flow flat. Clarity of intent: Descriptive field names and enabling comments help, but method names a–f and constructor parameters a–c obscure purpose and require inspecting implementations. Code length: Concise, with little unnecessary code. Action granularity: Each statement generally performs one action, and the long native cleanup call is formatted across lines. Reading flow: Organization and spacing support sequential reading, but opaque method names, the indirect b() call, and numerous positional cleanup arguments interrupt comprehension. The documentation also says 'same method' while the implementation comment specifies 'same thread,' introducing ambiguity.

Run 2

Code Structure: Fields, initialization, accessors, and lifecycle operations are logically organized into small methods. Nesting: Minimal nesting and an early return keep control flow simple. Clarity of intent: Descriptive field names and comments help, but single-letter method names and constructor parameters obscure operations and force readers to inspect implementations. Code length: Concise, with little unnecessary code; the lengthy native cleanup call reflects its required arguments. Action granularity: Each statement performs one action, and native-call arguments are separated onto individual lines. Reading flow: Generally natural, progressing from construction to activation, accessors, and cleanup, but opaque method names such as a(), b(), and f() interrupt understanding. The activation documentation also inconsistently refers to the same method while the implementation comment specifies the same thread.

Run 3

Code Structure: Fields, initialization, accessors, and cleanup are logically organized into small methods. Nesting: Very shallow; the early return in cleanup avoids unnecessary nesting. Clarity of intent: Descriptive field names and comments help, but single-letter method names (a–f) and constructor parameters obscure operations and force readers to inspect implementations. Code length: Concise, with little unnecessary code. Action granularity: Each statement performs one action, and the long native call lists arguments on separate lines. Reading flow: Generally natural, progressing from construction to initialization, accessors, and cleanup, but opaque names interrupt comprehension. The lengthy native call also requires careful tracking of similar queue fields. Overall, structurally readable but substantially weakened by naming.