Sample
int-c45a585828b5-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.651 | 0–1; higher is more readable |
| Dorn | 0.861 | 0–1; higher is more readable |
| Mi | 0.263 | 0–1; higher is more readable |
| LLOC | 43 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 3.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 12 | 0–20; mean of three runs |
| BTTF | 0.317 | 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. | 5317.662 | −175.483 |
| Source linesThe number of non-empty source lines. | 151 | +60.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.864 | −7.295 |
Intercept 8.87 + feature contributions = -113.508 (log-odds).
Score = sigmoid(-113.508) = 0.
| Score | 0.651 |
|---|
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. | 152 | −4.346 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 130 | +3.759 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 150.99 | +1.701 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 96.072 | +0.746 |
| 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.954 | −0.568 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.09 | +0.064 |
Intercept 0.07 + feature contributions = 1.824 (log-odds).
Score = sigmoid(1.824) = 0.861.
| Score | 0.263 |
|---|
| Score | 43 |
|---|
Run 1
The code structure is moderately organized, but its task-wrapping logic is obscured by single-letter method and parameter names like a(Callable<T> b), a(Runnable c), b(Collection...), d, e, f, etc. These provide no clue about purpose (wrap, submit, invokeAll, etc.). Nesting is relatively flat, and action granularity is mostly one per line, but the obfuscated naming destroys clarity of intent and reading flow. For example, delegate.submit(a(checkNotNull(j))) could be clear, but 'a' and 'j' make it ambiguous. The abstract method 'a(Callable<T> b)' represents wrapTask and is critical to the class contract, yet it is entirely unreadable. Overall, the code requires constant cross-referencing to understand, scoring very low on readability.
Run 2
This code has severe readability issues. The method names use single letters (a, b, c, d, e, f, g, h, i, j, k) and parameter names (a, b, c, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) that completely obscure intent. While the class structure follows the ExecutorService pattern, readers must constantly cross-reference the interface to understand what each method does. The original WrappingExecutorService likely had clear names like wrapTask, wrapTasks, execute, submit, invokeAll, invokeAny, shutdown, etc. The renaming destroys clarity. Nesting is minimal except in one place where wrapRunnable has a try-catch inside a lambda. Code length is normal for this type of class. One positive is that each line mainly does one action, but the meaningless names make even simple actions impossible to understand. The reading flow requires constant lookup of method signatures because names provide zero semantic value.
Run 3
This code is severely unreadable due to obfuscated naming. Meaningful identifiers (wrapTask, wrapTasks, execute, submit, invokeAll, etc.) have been replaced with single letters (a, b, c, d, e, f) and generic parameter names (a, b, c, d, f, g, h, j, k, l, m, n, o, p, q, r, s, t, u, v, w), destroying clarity of intent and reading flow. While the structure is logically organized and nesting is minimal, the action granularity is acceptable, and method lengths are concise, the code's purpose is completely obscured. The use of 'a' for both a method and a constructor parameter, and overloading methods named 'd' and 'f' with different parameter types, further confuses. Although the comments and class-level documentation are clear, they cannot compensate for the pervasive name mangling. This appears to be auto-obfuscated or minimized code, making it virtually unmaintainable.
Run 1
1. Code Structure: Logically groups task-wrapping helpers, wrapped delegation methods, and lifecycle delegation methods. 2. Nesting: Mostly flat; the lambda's try/catch and the collection loop introduce only modest nesting. 3. Clarity of intent: The class documentation and delegate calls explain the overall purpose, but single-letter method and variable names obscure individual operations. Documentation references wrapTask methods that are actually named a, and renamed methods marked @Override do not match ExecutorService, creating confusion. 4. Code length: Reasonably concise; repeated forwarding methods largely reflect the interface rather than unnecessary verbosity. 5. Action granularity: Statements generally perform one action per line, though nested wrapping and null-check calls slightly increase parsing effort. 6. Reading flow: Consistent formatting, comments, and method grouping support a natural progression, but cryptic identifiers force readers to inspect implementations repeatedly.
Run 2
Code Structure: Logically organized into wrapping helpers, task submission methods, and lifecycle delegation. Nesting: Mostly flat, with only a loop and a lambda containing try/catch. Clarity of intent: Severely weakened by single-letter method and parameter names; readers must inspect delegate calls to infer meaning. Javadoc references wrapTask, which does not match the actual method names, and renamed methods marked @Override do not match ExecutorService, creating further confusion. Code length: Reasonably concise for an executor wrapper, though delegation boilerplate adds repetition. Action granularity: Generally one operation per statement, with understandable composition of wrapping and delegation. Reading flow: Consistent formatting and section comments help, but opaque identifiers and misleading documentation interrupt comprehension.
Run 3
Code Structure: Well organized into task-wrapping helpers, wrapping delegation methods, and lifecycle delegation methods. Nesting: Shallow overall; only the runnable adapter introduces a lambda with try/catch. Clarity of intent: Severely weakened by single-letter method and parameter names. Documentation references wrapTask, but the actual methods are named a, and renamed ExecutorService methods make @Override declarations inconsistent with the interface. Code length: Reasonable for an executor wrapper, with necessary delegation boilerplate rather than excessive implementation. Action granularity: Most statements perform one clear action, although nested wrapping and null-check calls require some unpacking. Reading flow: Consistent formatting and grouping support scanning, but readers must repeatedly infer meanings from delegate calls because names provide little guidance.