Sample
Dorn/cuda/24
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 2.5Δ 2.5 |
| Scalabrino | 0.124 | 0–1; higher is more readable | 7.4Δ 7.4 |
| Dorn | 0.143 | 0–1; higher is more readable | 9.7Δ 9.7 |
| Mi | 0.115 | 0–1; higher is more readable | 11.7Δ 11.7 |
| LLOC | 1 | Logical lines; fewer is more readable | 97.9Δ 97.9 |
| DeepSeek V4 Pro | 3 | 0–20; mean of three runs | 3.2Δ 3.2 |
| GPT-6.1 Sol | 10 | 0–20; mean of three runs | 10.2Δ 10.2 |
| BTTF | 0.177 | 0–1; higher is more readable | 5.0Δ 5.0 |
| Human | 1.26 | 1–5; original rating | 0.0 |
Views
Select the downloaded ZIP or its extracted folder. Files stay in your browser.
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. | 2910.553 | −96.048 |
| Source linesThe number of non-empty source lines. | 30 | +12 |
| Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value. | 5.121 | −7.682 |
Intercept 8.87 + feature contributions = -82.86 (log-odds).
Score = sigmoid(-82.86) = 0.
| Score | 0.124 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| 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.968 | −0.569 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.14 | −0.416 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 29 | −0.245 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 28 | +0.231 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 31 | −0.061 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 29.792 | +0.007 |
Intercept 0.07 + feature contributions = -1.788 (log-odds).
Score = sigmoid(-1.788) = 0.143.
| Score | 0.115 |
|---|
| Score | 1 |
|---|
Run 1
This code is extremely difficult to read due to severe structural and stylistic problems. The macro-generated kernel name and function signature span multiple lines with excessive line continuation characters, making it visually fragmented. Variable declarations for 16 password characters and 16 intermediate values create massive horizontal sprawl and obscure the logic. The function relies on unclear macros like `incrementCounters##length##Multi()`, which hides critical behavior. While the main loop is somewhat flat and actions are roughly one-per-line, the massive parameter lists, repeated variable names (p0-p15, b0-b15), and lack of comments or whitespace grouping destroy readability. There is no logical separation between setup, hashing, checking, and incrementing phases. The intent of each step is buried under boilerplate and macro expansion. Even an experienced CUDA developer would struggle to trace data flow or spot bugs. It fails nearly all readability criteria: structure is tangled, intent is ambiguous, code is unnecessarily long due to repetitive expansions, and reading flow is unnatural.
Run 2
This CUDA kernel is extremely difficult to read. The macro-based templating (##length) obscures logic, and the function is massively overloaded with 16 near-identical parameters (p0-p15, b0-b15) repeated across multiple calls, creating visual noise. Line continuations with backslashes interrupt flow, and the 100+ character lines violate readability norms. Nesting is minimal but the sheer parameter count creates cognitive overload. Action granularity is poor—multiple operations and multi-line function calls are crammed together. The intent (password cracking via MD4 on GPU) is inferable from context but not clearly expressed in the code. Variable names like 'b0' and 'p0' carry no semantic meaning. There's no logical grouping or helper functions to manage complexity. While it is concise in terms of line count, it sacrifices all readability to achieve that. This code would be nearly impossible to maintain or debug without deep domain expertise.
Run 3
The code is extremely difficult to read due to its massive macro-based structure and poor formatting. It defines a CUDA kernel using a macro with token-pasting for multiple password lengths, making the code opaque and hard to navigate. There are over 60 variables declared, many virtually identical (p0-p15, b0-b15), which obscures intent. The nesting is shallow but the sheer line length and repetition hurt readability. Actions are spread across lines, but each line contains many parameters, making it hard to trace data flow. The while loop and function calls are long and disorganized. The code violates 'one action per line' in spirit, as each call takes dozens of parameters. The reading flow is severely disrupted by line continuations, alignment issues, and macro expansion. Overall, this implementation prioritizes performance over clarity, with no meaningful abstraction or documentation.
Run 1
Code Structure: Setup followed by a search loop is logically organized, but macro-based generation and large argument lists obscure boundaries. Nesting: Only one loop keeps nesting shallow, although its body is poorly indented. Clarity of intent: Function names suggest password generation, MD4 hashing, and hash checking, but terse variables, token pasting, and undocumented parameters hinder understanding. Code length: The overall routine is relatively short, yet repeated lists of sixteen scalar variables add substantial visual clutter. Action granularity: Most statements perform one action, though bulk declarations and extensive argument passing make individual lines dense. Reading flow: Execution proceeds naturally from initialization to hashing, checking, and incrementing; inconsistent spacing, indentation, and macro continuation backslashes interrupt that flow.
Run 2
Code Structure: A logical sequence of setup, candidate initialization, hashing, checking, and counter advancement is present, but macro-based generation and large argument lists obscure organization. Nesting: Only one loop keeps control flow shallow and easy to follow. Clarity of intent: Function and helper names convey password searching with MD4, but terse variables, token pasting, and hidden helper implementations make details difficult to understand. Code length: The kernel is relatively short, yet repeated lists of sixteen scalar variables create substantial visual clutter. Action granularity: Most statements perform one action, although grouped declarations and extensive parameter passing increase cognitive load. Reading flow: Execution proceeds naturally, but inconsistent indentation, long lines, and pervasive macro continuation backslashes disrupt scanning, particularly inside the loop.
Run 3
Code Structure: A logical setup followed by a search loop provides organization, but macro-based generation and large parameter lists obscure it. Nesting: Only one loop keeps nesting shallow, though inconsistent indentation weakens its visibility. Clarity of intent: Names such as loadStartPositions, CUDA_MD4, and checkHashMulti convey the overall purpose; abbreviated variables and opaque counter macros hide details. Code length: The kernel is relatively short, but repeated lists of sixteen scalar variables make it verbose and visually dense. Action granularity: Most statements perform one action, although bulk declarations and calls manipulate many values at once. Reading flow: Initialization, hashing, checking, and incrementing form a natural sequence, but continuation backslashes, uneven spacing, long lines, and token-pasting syntax interrupt scanning.