Sample

int-f9ab76fe9ea0-I04

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

Matched original source

Lines60

Scores

MethodScoreScale
Posnett0.2050–1; higher is more readable
Scalabrino0.6870–1; higher is more readable
Dorn0.760–1; higher is more readable
Mi0.7310–1; higher is more readable
LLOC12Logical lines; fewer is more readable
DeepSeek V4 Pro40–20; mean of three runs
GPT-6.1 Sol120–20; mean of three runs
BTTF0.3870–1; higher is more readable

Views

Source code

package com.google.common.graph; import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.util.Set; import org.jspecify.annotations.Nullable; /** * An interface for representing and manipulating an origin node's adjacent nodes and incident edges * in a {@link Network}. * * @author James Sexton * @param <N> Node parameter type * @param <E> Edge parameter type */ interface NetworkConnections<N, E> { Set<N> a(); Set<N> b(); Set<N> c(); Set<E> d(); Set<E> e(); Set<E> f(); /** * Returns the set of edges connecting the origin node to {@code node}. For networks without * parallel edges, this set cannot be of size greater than one. */ Set<E> g(N a); /** * Returns the node that is adjacent to the origin node along {@code edge}. * * <p>In the directed case, {@code edge} is assumed to be an outgoing edge. */ N h(E b); /** * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node. * * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true. */ @CanIgnoreReturnValue @Nullable N i(E c, boolean d); /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */ @CanIgnoreReturnValue N j(E e); /** * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor. */ void k(E f, N g, boolean h); /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */ void l(E i, N j); }

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.825.025−27.226
Source linesThe number of non-empty source lines.60+24
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.666−6.998

Intercept 8.87 + feature contributions = -1.354 (log-odds).
Score = sigmoid(-1.354) = 0.205.

Score0.687

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.58−1.017
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.96.721+0.756
Indentation frequencyHow rapidly indentation changes from line to line.40+0.646
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.99.984−0.57
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.052+0.439
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.59.921+0.428
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398

Intercept 0.07 + feature contributions = 1.15 (log-odds).
Score = sigmoid(1.15) = 0.76.

Score0.731
Score12
Run 1

The code is technically valid Java but extremely unreadable due to obfuscated naming. Methods have single-letter names (a, b, c, ..., l) and parameters are equally meaningless (N a, E b, boolean d, etc.). This obscures the intent of every method despite the Javadoc. The structure and nesting are fine, and the code is concise, but clarity of intent, action granularity, and reading flow are severely compromised. A reader cannot understand what the code does without constantly referring to documentation or hunting for the implementations. This is the opposite of self-documenting code and would be nearly impossible to maintain or review in a real codebase.

Run 2

The code is extremely difficult to read because all method names are meaningless single letters (a, b, c, g, h, i, j, k, l) and parameters are equally opaque. While the Javadoc comments describe some methods, many core methods lack any explanation at all. The structure is logical and formatting is clean, with flat nesting and one action per line, but clarity of intent is severely compromised. Reading flow is unnatural since readers must constantly cross-reference comments to understand purpose. The code violates fundamental readability principles by prioritizing brevity over descriptiveness. Even with comments, internal calls to these methods would be incomprehensible. This appears to be deliberately obfuscated code.

Run 3

The code structure is severely undermined by meaningless method and parameter names like a(), b(), c(), g(N a), h(E b), etc. This makes it impossible for a reader to understand the intent without referring to external documentation or the original source. The nesting is flat and each method performs one action, which is good, but the clarity of intent is extremely poor. Reading flow is disjointed because the semantics of each method are unclear. While the code is concise and not deeply nested, the cryptic naming overwhelms any structural benefits, making this effectively unreadable as presented.

Run 1

Code Structure: The interface is logically organized, separating node/edge queries from connection mutations. Nesting: There is no nested control flow, making the layout easy to scan. Clarity of intent: Single-letter method and parameter names severely obscure purpose, especially for the six undocumented query methods. Existing documentation helps explain later methods, but its descriptive parameter references do not match the actual names. Code length: The interface is concise, with little unnecessary content. Action granularity: Each declaration occupies its own line or small documentation block; there are no compound actions. Reading flow: Consistent formatting and query-before-mutation ordering support natural reading, but readers must repeatedly consult comments to infer operations. Overall, clean structure is undermined by opaque naming.

Run 2

Code Structure: Clean interface organization with consistent signatures and annotations. Nesting: Completely flat, making the declarations easy to scan. Clarity of intent: The interface documentation establishes its purpose, but single-letter method and parameter names severely obscure individual operations. Methods a–f have no explanatory documentation, and later comments reference descriptive parameter names that do not match the declarations. Code length: Concise, with useful documentation rather than unnecessary implementation detail. Action granularity: Each declaration occupies its own line, with no combined actions. Reading flow: Consistent spacing and sequential declarations support scanning, but opaque naming prevents readers from understanding relationships between operations without additional context.

Run 3

Code Structure: Well-organized interface with imports, documentation, and consistently formatted method declarations. Nesting: Entirely flat, making the structure easy to scan. Clarity of intent: Severely weakened by single-letter method and parameter names; the first six methods have no explanatory documentation, and later comments reference descriptive parameter names absent from the signatures. Code length: Concise, with useful documentation rather than unnecessary implementation detail. Action granularity: Each declaration occupies its own line or small annotation block, with no combined actions. Reading flow: Visually natural and consistent, but understanding the API requires repeatedly consulting comments and inferring distinctions between similarly typed methods.