Sample
int-28cdc259fb5e-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.888 | 0–1; higher is more readable |
| Dorn | 0.481 | 0–1; higher is more readable |
| Mi | 0.57 | 0–1; higher is more readable |
| LLOC | 24 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 8 | 0–20; mean of three runs |
| GPT-6.1 Sol | 14 | 0–20; mean of three runs |
| BTTF | 0.74 | 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. | 1184.7 | −39.095 |
| Source linesThe number of non-empty source lines. | 72 | +28.8 |
| 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.533 | −6.8 |
Intercept 8.87 + feature contributions = -8.225 (log-odds).
Score = sigmoid(-8.225) = 0.
| Score | 0.888 |
|---|
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. | 73 | −1.548 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 58 | +1.269 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 107.973 | +0.938 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 58 | −0.91 |
| 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. | 107.973 | −0.908 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 71.853 | +0.595 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.054 | +0.421 |
Intercept 0.07 + feature contributions = -0.074 (log-odds).
Score = sigmoid(-0.074) = 0.481.
| Score | 0.57 |
|---|
| Score | 24 |
|---|
Run 1
The code has a clear class structure and intent with good Javadoc, but the use of meaningless variable and method names (a, b, c, d, e) severely harms readability. The constructor parameters and all public method names fail to convey purpose, making the code ambiguous despite the explanatory comments. Nesting is minimal and each action generally occupies one line, which is positive. The class is concise and flat, with a natural flow if variable names were descriptive. However, the disconnect between the Javadoc terms (credential, type, retain, touch, release) and the actual identifiers (a, b, c, d, e) creates unnecessary cognitive load. The code would score significantly higher with proper naming.
Run 2
The code has clear purpose and structure, but readability is severely degraded by meaningless parameter names (e.g., `a`, `b`, `c`, `d`) and method names that obscure intent. Parameters like `long a` and `CredentialType b` give no indication of their roles. Method names such as `a()`, `b()`, `c()`, `d()`, and `e()` completely hide the operations they perform — likely due to obfuscation or deobfuscation artifacts. While the class is concise and has flat nesting, the naming failures force readers to rely entirely on comments and superclass contracts. The Javadoc helps somewhat, but code itself should be self-explanatory. Action granularity and reading flow suffer because each method becomes a puzzle rather than a clear statement. The structure follows a logical pattern for a reference-counted wrapper, but obfuscated names ruin clarity.
Run 3
The code structure is generally logical (clear class hierarchy, single responsibility), and nesting is minimal. However, readability is severely harmed by opaque naming: parameters 'a', 'b', 'c', 'd', methods 'a()', 'b()', 'c()', 'e()', and field 'credential' vs. parameter 'a' obscures intent. The Javadoc describes parameters 'credential' and 'type', but the code uses 'a' and 'b'. Method names like 'c()' and 'd()' give no hint of behavior (retain/touch). Length is moderate, but action granularity is okay. Reading flow is disrupted because users must decode what each single-letter name means rather than reading self-documenting code. Renaming identifiers to match Javadoc and using meaningful method names would raise the score significantly.
Run 1
Code Structure: The class is logically organized into fields, construction, accessors, reference-count operations, and release handling. Nesting: Minimal nesting and simple guards make execution easy to follow. Clarity of intent: Class documentation and descriptive field names explain the non-owning wrapper, but cryptic method names (a–e) and parameter names obscure individual operations. Constructor documentation also names parameters that do not match the signature. Code length: Concise, with little unnecessary code; repeated overrides are straightforward. Action granularity: Each line generally performs one action, making statements easy to scan. Reading flow: Consistent formatting and method grouping support natural reading, but understanding the unnamed operations requires consulting superclass or interface definitions.
Run 2
Code Structure: Logically organized into fields, constructor, accessors, and lifecycle overrides. Nesting: Very shallow, with simple guard clauses and no complex branching. Clarity of intent: Class documentation clearly explains non-ownership and external lifetime management, but single-letter method and parameter names obscure individual operations. Constructor documentation names credential and type rather than the actual parameters a and b, further reducing clarity. Code length: Concise, with short methods and little unnecessary code. Action granularity: Each statement performs one clear action; assignments, checks, and returns are separated. Reading flow: Consistent formatting and predictable method layout support easy scanning, but readers must infer the meanings of a(), b(), c(), d(), and e() from their implementations or superclass contracts.
Run 3
Code Structure: Fields, constructor, and overrides are logically organized into a compact wrapper class. Nesting: Minimal nesting and straightforward guard clauses make control flow easy to follow. Clarity of intent: Class documentation and descriptive fields explain non-owning credential semantics, but single-letter method and parameter names obscure operations such as retain, touch, and release. Constructor documentation refers to credential and type rather than the actual parameter names a and b. Code length: Concise, with little unnecessary code; short overrides are appropriate. Action granularity: Statements generally perform one action per line, supporting readability. Reading flow: The progression from initialization to accessors and lifecycle operations is natural, but cryptic method names interrupt comprehension and require readers to infer behavior from implementations.