Sample

int-9605d5332d2d-I04

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

Matched original source

Lines64

Scores

MethodScoreScale
Posnett0.9980–1; higher is more readable
Scalabrino0.9420–1; higher is more readable
Dorn0.6920–1; higher is more readable
Mi0.2980–1; higher is more readable
LLOC9Logical lines; fewer is more readable
DeepSeek V4 Pro5.670–20; mean of three runs
GPT-6.1 Sol13.330–20; mean of three runs
BTTF0.5910–1; higher is more readable

Views

Source code

package org.apache.kafka.streams.processor.internals; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.streams.processor.TaskId; import java.util.Map; import java.util.Set; /** * See {@link StoreChangelogReader}. */ public interface ChangelogReader extends ChangelogRegister { /** * Restore all registered state stores by reading from their changelogs * * @return the total number of records restored in this call */ long a(final Map<TaskId, Task> a); /** * Transit to restore active changelogs mode */ void b(); /** * Transit to update standby changelogs mode */ void c(); /** * @return true if the reader is in restoring active changelog mode; * false if the reader is in updating standby changelog mode */ boolean d(); /** * @return the changelog partitions that have been completed restoring */ Set<TopicPartition> e(); /** * @return the logical changelog partitions end-offsets */ Map<TopicPartition, Long> f(); /** * Returns whether all changelog partitions were completely read. * * Since changelog partitions for standby tasks are never completely read, this method will always return * {@code false} if the changelog reader registered changelog partitions for standby tasks. * * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read, * {@code false} otherwise */ boolean g(); /** * Clear all partitions */ void h(); /** * @return whether the changelog reader has just been cleared or is uninitialized */ boolean i(); }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Source linesThe number of non-empty source lines.64+25.6
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.649.672−21.439
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.41−6.614

Intercept 8.87 + feature contributions = 6.416 (log-odds).
Score = sigmoid(6.416) = 0.998.

Score0.942

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.121.985−1.502
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.121.985+1.164
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.54−0.876
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.035+0.601
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.63.813+0.482
Indentation frequencyHow rapidly indentation changes from line to line.35+0.473
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398

Intercept 0.07 + feature contributions = 0.811 (log-odds).
Score = sigmoid(0.811) = 0.692.

Score0.298
Score9
Run 1

The code structure is severely undermined by meaningless method names (a(), b(), c(), etc.) that completely obscure intent, despite descriptive comments. While the interface has flat nesting and one action per method declaration, the reading flow is broken because methods must be cross-referenced with comments to understand their purpose. The code length is concise but at the cost of clarity—single-letter names convey no semantic meaning. Action granularity is appropriate per method, but the naming makes each method ambiguous. Comments explain what methods do, yet readers cannot infer behavior from signatures alone. This appears obfuscated, possibly due to automated minification or deliberate de-identification. To improve readability, restore meaningful method names like restoreAll(), transitionToActive(), transitionToStandby(), isRestoringActive(), completedChangelogs(), changelogEndOffsets(), allChangelogsRead(), clear(), and isCleared().

Run 2

While the code is structurally organized as an interface with Javadoc comments, the method naming is severely obfuscated. Methods named 'a' through 'i' provide no semantic meaning, forcing readers to rely entirely on comments to understand purpose. This destroys reading flow and clarity of intent, as callers would see meaningless identifiers like 'b()' or 'g()' in implementation code. The interface has good flat structure and one action per method declaration, but the obfuscated naming negates these positives. This appears to be intentionally de-identified code, possibly for obfuscation or minification, which is unacceptable for production source code. The Javadoc comments are well-written and descriptive, but they cannot compensate for method names that convey zero information. In any real codebase, this would be considered completely unreadable and unmaintainable.

Run 3

The code has a clear structure with logical separation of methods and descriptive Javadoc comments. However, the method names (a, b, c, etc.) are completely opaque, making the interface impossible to understand without reading the comments. This severely harms clarity of intent and reading flow. Nesting is flat (good), and each method is concise, but the action granularity and code length are impacted by the abbreviated names. Overall, the structure and documentation are solid, but the naming convention destroys readability.

Run 1

Code Structure: The interface is logically organized, with imports, a type declaration, and individually documented methods. Nesting: Flat declarations make scanning easy, with no nested control flow. Clarity of intent: Descriptive Javadocs and return types explain the operations, but single-letter method names (a–i) and the parameter name a severely weaken discoverability and readability at call sites. Code length: Concise overall; documentation adds useful context, although some comments are repetitive or awkwardly phrased. Action granularity: Each method declaration occupies its own line, with no combined actions. Reading flow: Consistent spacing and comment placement support a natural top-to-bottom flow, but readers must repeatedly consult documentation because the method names convey no meaning.

Run 2

Code Structure: The interface is logically organized, with imports, documentation, and related method declarations clearly separated. Nesting: The code is flat, with no nested control flow. Clarity of intent: Javadocs explain each operation, but single-letter method names and the parameter name 'a' obscure meaning and force readers to consult comments. Code length: The interface is concise overall; the longer documentation for completion behavior provides useful context rather than unnecessary verbosity. Action granularity: Each declaration occupies its own line, with no bundled actions. Reading flow: Consistent spacing and documentation support easy scanning, although meaningless identifiers disrupt comprehension and make relationships between operations less apparent.

Run 3

Code Structure: The interface is logically organized, with imports followed by documented method declarations. Nesting: There is no nested control flow, making the code easy to scan. Clarity of intent: Javadocs and return types explain the operations, but single-letter method names (a–i) and parameter name a obscure meaning and force readers to consult documentation. Code length: The interface is concise; the longer comment for g usefully explains standby-task behavior. Action granularity: Each declaration occupies its own line and represents one operation. Reading flow: Consistent formatting and adjacent documentation provide a natural flow, though missing spacing around the package/import sections and opaque names reduce readability. Descriptive method and parameter names would substantially improve the code.