Sample
pyint-b434f1b28fa3-I04
Replace names with deterministic minifier-style shortest identifiers
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0 | 0–1; higher is more readable |
| Dorn | 0.488 | 0–1; higher is more readable |
| Mi | 0.646 | 0–1; higher is more readable |
| LLOC | 58 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 2.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 10.33 | 0–20; mean of three runs |
| BTTF | 0.166 | 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. | 3032.552 | −100.074 |
| Source linesThe number of non-empty source lines. | 127 | +50.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.368 | −6.551 |
Intercept 8.87 + feature contributions = -46.956 (log-odds).
Score = sigmoid(-46.956) = 0.
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. | 128 | −3.496 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 97 | +2.618 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 97 | −1.805 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 126.838 | +1.363 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 78.227 | +0.458 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.053 | +0.424 |
| 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. | 79 | +0.319 |
Intercept 0.07 + feature contributions = -0.049 (log-odds).
Score = sigmoid(-0.049) = 0.488.
| Score | 0.646 |
|---|
| Score | 58 |
|---|
Run 1
The code is heavily obfuscated, rendering it nearly unreadable. Methods have been renamed from expressive names like '_make_token_with_timestamp' to meaningless single-letter identifiers ('a', 'b', 'g'). Properties are broken by references to non-existent private methods ('_get_secret' vs 'a'). This destroys clarity of intent and reading flow. Extreme nesting in 'f' and dense string formatting in 'g' further impede comprehension. The original logic is recognizable (Django token generator), but the mangled naming makes verification and maintenance extremely error-prone.
Run 2
This code is extremely unreadable due to deliberately obfuscated naming and severely degraded structure. Methods are renamed to meaningless single letters (a through j) and variables to arbitrary symbols (m, n, o, p, q, etc.), completely obscuring their intent. While the original logic (Django's password reset token generator) is logically sound and flat, this version destroys clarity of intent, reading flow, and action granularity. Comments explain what the code does, but they conflict with the cryptic identifiers, making the code harder to follow rather than easier. The class and docstrings remain descriptive, but the method and variable names undermine comprehension. Structure is superficially organized but semantically tangled. Nesting is limited, but that does not compensate for the unreadable identifiers. Code length is close to original, but every action requires cross-referencing names. This would be borderline unmaintainable for any developer.
Run 3
The code is severely unreadable due to obfuscated method names (a, b, c, d, e, f, g, h, i, j) that completely hide their purpose. Parameters use single or uninformative variable names (m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D), making the logic almost impossible to follow without extensive guessing. The class likely mimics Django's PasswordResetTokenGenerator, but the renaming destroys all clarity of intent. Structure is moderate, with some nesting in token validation, but the naming is the primary failure across criteria such as clarity of intent and reading flow. Although line length is reasonable and one action per line is mostly followed, the absurd naming makes the code effectively unreadable and unmaintainable.
Run 1
Code Structure: Responsibilities are logically separated into small methods, but property declarations reference undefined accessor names, disrupting coherence. Nesting: Mostly shallow, with early returns simplifying validation; the loop-else requires some attention. Clarity of intent: The class name, docstrings, and comments explain password-reset behavior, but single-letter method and variable names severely obscure individual operations and data roles. Code length: Implementation is reasonably concise, although the long explanatory docstring and awkwardly split slicing add reading overhead. Action granularity: Most statements perform one action, with only a few chained expressions combining steps. Reading flow: Generation, validation, hashing, and time helpers follow a sensible sequence, but opaque names force repeated cross-referencing, and mismatched property accessors interrupt understanding.
Run 2
Code Structure: Responsibilities are logically separated into small class methods, but property declarations reference undefined getter/setter names, disrupting coherence. Nesting: Mostly shallow, with early returns keeping validation straightforward; the loop-else requires extra attention. Clarity of intent: Docstrings and comments explain password-reset behavior well, but single-letter method and variable names obscure roles and relationships. Code length: Generally concise, although extensive documentation and awkward multiline slicing add visual bulk. Action granularity: Most lines perform one clear action, with reasonable separation of parsing, verification, and expiration checks. Reading flow: The overall generation and validation sequence is natural, but opaque calls such as self.i(self.j()) force readers to repeatedly inspect definitions.
Run 3
Code Structure: The class separates token generation, validation, hashing, and time handling into focused methods, but property declarations reference undefined getter/setter names, disrupting coherence. Nesting: Shallow nesting and early returns keep validation manageable; the loop-else requires some care. Clarity of intent: Docstrings and comments explain the password-reset mechanism, but single-letter method and variable names obscure roles and relationships. Code length: Generally concise, with useful documentation, although the multiline digest slice is unnecessarily awkward. Action granularity: Most statements perform one action, making individual operations easy to isolate. Reading flow: Validation follows a logical parse, verify, and expiry-check sequence, but opaque identifiers force readers to repeatedly trace calls and infer data meanings.