Sample
int-b2be0f23cbe0-I03
Replace method, parameter, and local names with length-matched, meaningful but unrelated names
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Scalabrino | 0.524 | 0–1; higher is more readable |
| Dorn | 0.331 | 0–1; higher is more readable |
| Mi | 0.342 | 0–1; higher is more readable |
| LLOC | 84 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 7 | 0–20; mean of three runs |
| GPT-6.1 Sol | 11.33 | 0–20; mean of three runs |
| BTTF | 0.321 | 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. | 5420.023 | −178.861 |
| Source linesThe number of non-empty source lines. | 133 | +53.2 |
| 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.649 | −6.973 |
Intercept 8.87 + feature contributions = -123.764 (log-odds).
Score = sigmoid(-123.764) = 0.
| Score | 0.524 |
|---|
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. | 134 | −3.708 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 121 | +3.448 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 121 | −2.356 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 132.888 | +1.448 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 96.261 | +0.749 |
| 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.985 | −0.443 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.088 | +0.087 |
Intercept 0.07 + feature contributions = -0.705 (log-odds).
Score = sigmoid(-0.705) = 0.331.
| Score | 0.342 |
|---|
| Score | 84 |
|---|
Run 1
The code demonstrates poor readability due to misleading naming conventions. Variables like 'defaultBalance', 'pendingAddress', 'remoteKey', 'map', 'capture', 'nextOrder', 'response', 'age', 'activeRecord', and 'user' do not reflect their actual purpose in the SipHash algorithm, obscuring intent significantly. The constructor parameters and ByteBuffer handling are particularly confusing—'remoteKey' is a seed value and 'map' is derived from seed bytes. The mathematical operations in sendNode are technically concise but lack explanatory comments. However, the code has some positive aspects: flat structure, one action per line, and consistent formatting. The raw shifting operations for packing bytes are efficient but dense. Overall, while the algorithm implementation is likely correct and concise, the obfuscated naming and minimal comments make it hard to read and maintain, justifying a score of 8.
Run 2
The code shows some organization but suffers from poor naming and unclear intent. Variable names like 'pendingAddress', 'defaultBalance', 'remoteKey', 'map', 'activeRecord', 'nextOrder', 'response', 'age', 'config', 'user', 'date', 'mode', 'flag', 'path', and 'node' are misleading or meaningless in the context of SipHash. This makes the code very difficult to understand despite the algorithm being well-documented. The structure is moderately flat with reasonable line-by-line granularity, but the dense switch statement and confusing variable names create a hard-to-follow reading flow. The length is concise for the algorithm, but clarity suffers significantly due to obfuscated naming conventions.
Run 3
The code has a clear high-level structure and some comments, but readability is severely hindered by obfuscated variable names that do not reflect their purpose (e.g., 'pendingAddress' for finalizationRounds, 'remoteKey'/'map' for seed halves, 'capture', 'state', 'nextOrder', 'response', 'age', 'config', 'user', 'date', 'mode', 'flag', 'path', 'node'). This makes it nearly impossible to discern intent without external documentation. The logic is deeply tied to the SipHash algorithm but the naming obscures it. The switch statement with intentional fall-through is compact but adds to the difficulty. While the code is reasonably concise and avoids excessive nesting, the poor naming conventions dominate the evaluation, making the code hard to read and maintain.
Run 1
1. Code Structure: Constants, initialization, hashing, and round operations are logically separated into a compact class. 2. Nesting: Mostly shallow, with only a nested compression loop and conditional inside the main loop. 3. Clarity of intent: The SipHash reference and descriptive state constants help, but misleading names such as capture, sendNode, pendingAddress, map, and age obscure algorithmic roles. Unexplained switch fall-through and bit manipulations further hinder understanding. 4. Code length: Reasonably concise for a cryptographic implementation; repetitive state operations are appropriate, though round-loop repetition adds some verbosity. 5. Action granularity: Almost every statement performs one operation, making state changes easy to trace. 6. Reading flow: Initialization, block processing, tail processing, and finalization follow a natural sequence, but inconsistent terminology and sparse explanations interrupt comprehension.
Run 2
Code Structure: Constants, initialization, hashing, and round operations are logically separated. Nesting: Mostly shallow, with manageable nested loops and one switch. Clarity of intent: The SipHash reference and descriptive state constants help, but misleading names such as capture, sendNode, defaultBalance, pendingAddress, age, and mode obscure algorithmic roles. Code length: Reasonably concise for a cryptographic implementation; repetitive round operations are appropriately extracted. Action granularity: Statements generally perform one action per line, making state changes easy to follow. Reading flow: Initialization, block processing, tail handling, and finalization follow a natural sequence, but cryptic identifiers and undocumented switch fall-through interrupt comprehension. The relationship between buffer position, remaining length, and loop bounds is also difficult to verify. Overall, clean formatting and organization are undermined primarily by poor naming and insufficient explanation of subtle byte-processing logic.
Run 3
Code Structure: Constants, initialization, hashing, and round operations are logically separated into a compact class. Nesting: Mostly shallow, with straightforward loops and conditionals; the fall-through switch requires extra attention. Clarity of intent: The SipHash reference and state constants provide context, but misleading names such as defaultBalance, pendingAddress, capture, sendNode, age, and user obscure algorithmic roles. Code length: Reasonably concise for a cryptographic implementation, although repeated round loops add minor duplication. Action granularity: Each statement generally performs one operation, making state updates easy to follow individually. Reading flow: Initialization, block processing, tail handling, and finalization follow a natural sequence, but unclear position-versus-length naming, unexplained switch fall-through, and sparse explanations of bit manipulation interrupt comprehension.