Sample
int-c2e413487912-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.881 | 0–1; higher is more readable |
| Dorn | 0.544 | 0–1; higher is more readable |
| Mi | 0.598 | 0–1; higher is more readable |
| LLOC | 31 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 10 | 0–20; mean of three runs |
| GPT-6.1 Sol | 13 | 0–20; mean of three runs |
| BTTF | 0.584 | 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. | 2518.573 | −83.113 |
| Source linesThe number of non-empty source lines. | 71 | +28.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.818 | −7.228 |
Intercept 8.87 + feature contributions = -53.071 (log-odds).
Score = sigmoid(-53.071) = 0.
| Score | 0.881 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 68 | +1.615 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 72 | −1.513 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 68 | −1.14 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 86.972 | +0.599 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 70.932 | +0.582 |
| 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. | 86.972 | −0.019 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.099 | −0.018 |
Intercept 0.07 + feature contributions = 0.176 (log-odds).
Score = sigmoid(0.176) = 0.544.
| Score | 0.598 |
|---|
| Score | 31 |
|---|
Run 1
The code structure is not well-organized due to single-letter method and variable names (a, b, c, d, e, f, g, etc.) that obscure intent. This makes the code ambiguous and hard to follow. The nesting is relatively flat, which is good, and action granularity is mostly one action per line. However, readability suffers significantly from poor naming, making it unnecessarily difficult to understand the purpose of each method and variable. Reading flow is disorganized because readers must mentally map cryptic names to their roles. The code length is concise, but brevity comes at the expense of clarity. Comments on the key decoupling are helpful, but they don't compensate for opaque method names. Overall, the code is functionally compact but poorly structured for human comprehension.
Run 2
The code is well-structured with clear sections: constants, key initialization, thread-local Mac instances, and utility methods. The flat hierarchy and single-level nesting in control flow enhance readability. While method names like a(), b(), c(), d(), and e() are opaque, the explanatory comments about cryptographic decoupling and the consistent pattern of one operation per line improve clarity. The use of try-catch for multiple exceptions is concise, and the helper method encapsulation avoids duplication. The only drawbacks are the abbreviated method/parameter names, which slightly reduce intent clarity, and the lack of Javadoc for public methods. Overall, the code demonstrates strong organization, minimal nesting, and good reading flow, making it highly readable despite minor naming weaknesses.
Run 3
The code has severe readability issues. Method and variable names are cryptic single letters (a, b, c, d, e, f, g, h, i, j, k, l), making the logic difficult to follow. The overridden FastThreadLocal method 'a()' obscures intent, and the helper method 'b()' uses confusingly named parameters. Critical cryptographic operations lack descriptive naming despite a helpful comment. The try-catch structure is reasonable, but the overall flow is unnatural, requiring the reader to repeatedly jump between terse methods. The class is concise but at the expense of clarity. While import statements and structure are organized, the naming and parameter choices make the code feel obfuscated and violate clear-intent principles.
Run 1
Code Structure: Logically separates key initialization, thread-local MAC instances, MAC creation, signing, and public-facing wrappers. Nesting: Shallow, with only simple try/catch and conditional blocks. Clarity of intent: Descriptive constants and the cryptographic-decoupling comment help, but single-letter method and variable names obscure operations, parameters, and the distinction between signing entry points. Code length: Compact and mostly justified; the two thread-local initializers introduce minor repetition. Action granularity: Generally one action per line, making individual steps easy to follow. Reading flow: Proceeds naturally from configuration to helpers and wrappers, but readers must repeatedly trace ambiguous names to understand behavior. Overall, strong organization and low nesting are substantially undermined by poor naming.
Run 2
Code Structure: Well organized into constants, key initialization, thread-local instances, shared helpers, and entry points. Nesting: Shallow, with only a try/catch and a simple conditional. Clarity of intent: Descriptive constants and the cryptographic separation comment help, but single-letter method and parameter names obscure initialization, signing, and output-length handling. Code length: Compact without significant unnecessary code; parallel thread-local declarations introduce modest duplication. Action granularity: Generally one action per line, making individual operations easy to follow. Reading flow: The organization is natural, but readers must repeatedly trace ambiguous names to understand the helpers and distinguish the two entry points. Overall, strong structural readability is substantially weakened by opaque naming.
Run 3
Code Structure: Logically organized into constants, key initialization, thread-local MAC instances, helpers, and entry points. Nesting: Shallow, with only a try/catch and a simple conditional. Clarity of intent: Descriptive constants and the security comment explain key separation, but single-letter method and variable names obscure initialization, signing, inputs, and output lengths. Code length: Compact, with shared helpers avoiding substantial duplication; separate thread-local declarations are reasonable. Action granularity: Each statement generally performs one action, making individual operations easy to follow. Reading flow: The top-to-bottom organization is natural, but readers must repeatedly trace opaque identifiers to understand the helpers and distinguish entry points. Overall, good structural readability is significantly weakened by naming.