Sample
int-650b478f87f6-I04
Replace method, parameter, and local names with deterministic ProGuard-style short identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.885 | 0–1; higher is more readable |
| Dorn | 0.844 | 0–1; higher is more readable |
| Mi | 0.757 | 0–1; higher is more readable |
| LLOC | 11 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 10.33 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14.33 | 0–20; mean of three runs |
| BTTF | 0.736 | 0–1; higher is more readable |
Views
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (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. | 859.051 | −28.349 |
| Source linesThe number of non-empty source lines. | 40 | +16 |
| 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.98 | −7.47 |
Intercept 8.87 + feature contributions = -10.948 (log-odds).
Score = sigmoid(-10.948) = 0.
| Score | 0.885 |
|---|
Feature contributions
| Feature | Value | Contribution (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. | 70.976 | +0.659 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 35 | +0.473 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 41 | −0.415 |
| 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. | 70.927 | +0.34 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 39.764 | +0.146 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.095 | +0.021 |
Intercept 0.07 + feature contributions = 1.692 (log-odds).
Score = sigmoid(1.692) = 0.844.
| Score | 0.757 |
|---|
| Score | 11 |
|---|
Run 1
The code is structurally sound with logical organization, low nesting, and concise methods. However, readability is significantly hampered by poor naming conventions. Method names like a(), b(), c() and parameters a, b, c, d obscure intent, making the code hard to follow without external context. The class itself follows a clear pattern (AST node for a long literal) but the obfuscated names create unnecessary cognitive overhead. Action granularity is appropriate, with one main operation per line. Reading flow is natural due to the simple structure, but the lack of descriptive naming reduces clarity and would likely hinder maintenance or review.
Run 2
The code is functionally minimal but severely obfuscated by meaningless method and parameter names (a, b, c, d, e, f). This makes the intent of each method unclear, violating the clarity of intent and reading flow criteria. While the class structure is simple and flat, the poor naming forces the reader to infer behavior from context. The use of single-letter variables throughout destroys action granularity and natural reading flow, making the code nearly unreadable despite its short length.
Run 3
The code is logically structured but suffers from poor readability due to meaningless method and parameter names (a, b, c, d, e, f) which obscure intent. The nesting is flat and actions are mostly one per line, aiding flow, but the obfuscated identifiers force the reader to infer behavior from context. The class purpose is clear from the class name and comments, but method names like 'a()' and 'c()' break clarity. Code length is concise, though not at the cost of clarity. The reading flow is disrupted by having to map cryptic names back to their roles.
Run 1
Code Structure: The class is logically organized into a field, constructor, and overridden methods. Nesting: There is no nested control flow, making it easy to scan. Clarity of intent: The class name and documentation clearly identify a long-literal AST node, but single-letter method and parameter names obscure method purposes and argument meanings. The descriptor "J" also requires JVM-specific knowledge. Code length: The implementation is concise with little unnecessary code. Action granularity: Each statement occupies its own line and performs a distinct operation. Reading flow: The field-to-constructor-to-method sequence is natural, though ambiguous names force readers to consult superclass definitions or surrounding code.
Run 2
Code Structure: The class is logically organized into a field, constructor, and short overridden methods. Nesting: There is no nested control flow, making the code easy to scan. Clarity of intent: The class name and documentation clearly identify a long-literal AST node, but single-letter method and parameter names obscure individual operations and roles. The JVM descriptor "J" requires domain knowledge. Code length: The implementation is concise with no unnecessary logic, though extra blank lines add minor visual spacing. Action granularity: Each statement performs one action on its own line. Reading flow: The field-to-constructor-to-method sequence is natural, and formatting is consistent; however, readers must infer the purposes of a(), b(), and c() from their bodies or superclass contract.
Run 3
Code Structure: The class is logically organized into a field, constructor, and small overridden methods. Nesting: There is no nested control flow, making it easy to scan. Clarity of intent: The class name and documentation clearly identify a long-literal AST node, but single-letter method and parameter names obscure individual responsibilities and argument meanings. The JVM descriptor "J" also requires domain knowledge. Code length: The implementation is concise with little unnecessary code, although some blank lines are excessive. Action granularity: Each statement performs one distinct action, with no compound lines. Reading flow: The field-to-constructor-to-method progression is natural, but understanding the overridden methods requires consulting the superclass because their names convey no intent.