Sample
int-d8055429f29d-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.825 | 0–1; higher is more readable |
| Dorn | 0.214 | 0–1; higher is more readable |
| Mi | 0.372 | 0–1; higher is more readable |
| LLOC | 15 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 10.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 15 | 0–20; mean of three runs |
| BTTF | 0.59 | 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. | 1323.931 | −43.69 |
| Source linesThe number of non-empty source lines. | 46 | +18.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.758 | −7.137 |
Intercept 8.87 + feature contributions = -23.557 (log-odds).
Score = sigmoid(-23.557) = 0.
| Score | 0.825 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 46 | +0.854 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 46 | −0.635 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 44 | −0.522 |
| 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. | 96.894 | −0.439 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 45.857 | +0.231 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.102 | −0.054 |
Intercept 0.07 + feature contributions = -1.298 (log-odds).
Score = sigmoid(-1.298) = 0.214.
| Score | 0.372 |
|---|
| Score | 15 |
|---|
Run 1
The code follows a standard benchmark structure with clear setup, teardown, and benchmark methods, but its readability is severely impacted by non-descriptive method names (a, b, c, d, e, f). The class lacks any explanatory comments or Javadocs. The logic is linear and presentable, with low nesting and appropriate action granularity. However, ambiguous identifiers obscure intent, forcing the reader to infer purpose from implementation details. While concise, this brevity comes at the cost of clarity. The reading flow is acceptable due to the consistent method ordering but is undermined by the meaningless naming convention.
Run 2
The code has a clear package structure and follows a logical class organization, but readability is hindered by non-descriptive method names (a, b, c, d, e, f) that obscure intent. Nesting is minimal, and the overall flow is flat, which is positive. However, the setup and teardown methods lack meaningful names, making the benchmark purpose ambiguous without external documentation. Code length is concise, but this brevity comes at the cost of clarity. Action granularity is generally one action per line, which aids reading, but method chaining like `setLong(0, 1).getLong(0)` slightly reduces clarity. The reading flow is natural in terms of setup, benchmark, teardown, but the cryptic naming disrupts understanding. Overall, the code would be significantly more readable with descriptive method names matching their benchmark targets.
Run 3
The code has a clear overall structure with separate setup, teardown, and benchmark methods, and it avoids deep nesting. However, readability is significantly reduced by poor naming: method names a(), b(), c(), d(), e(), and f() give no indication of their purpose. The class name and field names are helpful, but the benchmark methods are ambiguous without reading their bodies. The code is concise and follows a logical order, but the lack of descriptive names forces the reader to inspect each method to understand what is being benchmarked. Action granularity is good (one primary operation per line), and the reading flow is natural, but the vague method names undermine clarity of intent. Overall, the code requires more effort than necessary to parse due to non-descriptive identifiers.
Run 1
Code Structure: Logically organized into fields, setup, teardown, and benchmark methods, with annotations clearly identifying roles. Nesting: Flat methods with no nested control flow make scanning easy. Clarity of intent: Types and annotations suggest a buffer-performance comparison, but single-letter method names obscure individual benchmark purposes; repeated numeric literals lack context. Code length: Compact and appropriately sized, without unnecessary boilerplate. Action granularity: Most lines perform one action, although chained write-and-read calls combine two operations in a single expression. Reading flow: Consistent formatting and paired benchmark methods support a natural progression, but descriptive method names and better import spacing would improve readability.
Run 2
Code Structure: Fields, setup, teardown, and benchmark methods are logically organized and clearly separated by annotations. Nesting: The code is flat, with no nested control flow. Clarity of intent: Buffer types and annotations reveal the benchmarking purpose, but method names a–f obscure each benchmark's specific operation; repeated numeric literals lack descriptive names. Code length: The implementation is concise, with little unnecessary code. Action granularity: Most lines perform one action, though c and d chain write and read operations on a single line. Reading flow: Setup precedes cleanup and benchmarks, and related buffer operations are paired consistently. However, opaque method names and ungrouped imports make scanning less informative.
Run 3
Code Structure: Fields, setup, teardown, and benchmark methods are logically organized and clearly separated by annotations. Nesting: No nested control flow; every method is flat and easy to scan. Clarity of intent: The class and field names communicate a buffer benchmark, but method names a–f obscure the specific operations and lifecycle roles. Unexplained literals also slightly reduce clarity. Code length: The code is concise, with minimal boilerplate and no unnecessary implementation detail. Action granularity: Most lines perform one action, although c() and d() chain write and read operations on a single line. Reading flow: Setup precedes teardown and benchmarks, creating a natural progression; consistent formatting helps, but meaningful method names and grouped imports would improve navigation.