Sample
int-f8eb52082e4e-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.828 | 0–1; higher is more readable |
| Dorn | 0.685 | 0–1; higher is more readable |
| Mi | 0.7 | 0–1; higher is more readable |
| LLOC | 53 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 6.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14 | 0–20; mean of three runs |
| BTTF | 0.513 | 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. | 4086.4 | −134.851 |
| Source linesThe number of non-empty source lines. | 146 | +58.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.708 | −7.062 |
Intercept 8.87 + feature contributions = -74.643 (log-odds).
Score = sigmoid(-74.643) = 0.
| Score | 0.828 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 147 | −4.168 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 113 | +3.171 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 145.366 | +1.622 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 99.946 | +0.808 |
| 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.959 | −0.569 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.154 | −0.556 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
Intercept 0.07 + feature contributions = 0.776 (log-odds).
Score = sigmoid(0.776) = 0.685.
| Score | 0.7 |
|---|
| Score | 53 |
|---|
Run 1
This code is extremely difficult to read due to deliberate obfuscation. Method names (a, b, c, etc.) and parameter names (a, b, c...) provide zero semantic meaning, completely obscuring intent. The single-letter names force the reader to constantly cross-reference the Network interface to understand each method's purpose. While the structure is technically flat (good), the clarity of intent, reading flow, and general readability are severely compromised. The code is concise, but at the cost of being useless for maintenance or review. Comment and package/import sections are fine, but they cannot compensate for the cryptic identifiers.
Run 2
The code has flat, consistent method delegation, and each method performs one action, which aids predictability. However, readability is severely undermined by meaningless single-letter method names (a through w) and generic parameter names (a, b, c...). Intent is completely ambiguous without looking up each abbreviation, destroying the natural reading flow. The class documentation explains the design but cannot compensate for opaque naming. There is also parameter shadowing in some methods (e.g., i(N a) calls a().adjacentNodes(a)), which is confusing. Overall structure and length are fine, but clarity of intent and reading flow are critically weak.
Run 3
The code structure is logical but severely undermined by obfuscated naming (single-letter method names, vague delegate method 'a()'). Nesting is flat, which is good, but clarity of intent is poor because the method names convey no meaning about their operations. Code length is concise but at the cost of readability. Action granularity is appropriate—one action per line. Reading flow is natural in terms of formatting and order, but the cryptic identifiers disrupt comprehension. The class appears to be a forwarding wrapper, but understanding each method's purpose requires cross-referencing the delegate interface, defeating the purpose of readable code.
Run 1
Code Structure: Logically organized as a forwarding class, with related methods and overloads grouped together. Nesting: Flat, with no conditionals, loops, or nested control flow. Clarity of intent: The documentation and descriptive delegate calls explain the overall purpose, but single-letter method and parameter names obscure individual operations and argument roles. Code length: Each method is concise; the overall length largely reflects necessary forwarding boilerplate rather than unnecessary complexity. Action granularity: Each method contains one straightforward return statement, making operations easy to isolate. Reading flow: Consistent formatting and repeated delegation patterns support predictable scanning, but opaque names force readers to inspect method bodies to understand the API.
Run 2
Code Structure: Methods are consistently organized as straightforward delegate wrappers, with related overloads grouped together. Nesting: There is no control-flow nesting, making each method easy to follow. Clarity of intent: The class documentation and descriptive delegate calls explain the forwarding purpose, but single-letter method and parameter names obscure the public operations and argument roles. Using a for both the delegate accessor and a parameter adds visual confusion. Code length: Each method is concise; the overall length comes from necessary forwarding boilerplate rather than complex logic. Action granularity: Each method performs one return operation on its own line. Reading flow: Consistent formatting and a predictable forwarding pattern support scanning, but readers must inspect method bodies to discover what the cryptically named methods do.
Run 3
Code Structure: Well-organized forwarding class with consistent method layout and related overloads grouped together. Nesting: Completely flat; each method contains a single return statement. Clarity of intent: The class documentation and descriptive delegate calls explain the forwarding purpose, but single-letter method and parameter names obscure the public operations and argument roles. The repeated a() accessor is particularly uninformative. Code length: Individual methods are concise; the overall length reflects necessary forwarding boilerplate rather than unnecessarily complex logic. Action granularity: Each statement performs one straightforward delegation, with no bundled unrelated actions. Reading flow: Consistent formatting and predictable delegation make scanning easy, but alphabetical method names force readers to inspect implementations to understand each operation. Descriptive names would substantially improve readability.