Sample
Dorn/cuda/53
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 1.7Δ 14.2 |
| Scalabrino | 0.069 | 0–1; higher is more readable | 3.9Δ 12.0 |
| Dorn | 0.396 | 0–1; higher is more readable | 32.0Δ 16.2 |
| Mi | 0.212 | 0–1; higher is more readable | 21.2Δ 5.3 |
| LLOC | 29 | Logical lines; fewer is more readable | 13.5Δ 2.4 |
| DeepSeek V4 Pro | 10 | 0–20; mean of three runs | 40.9Δ 25.1 |
| GPT-6.1 Sol | 12.33 | 0–20; mean of three runs | 24.4Δ 8.5 |
| BTTF | 0.476 | 0–1; higher is more readable | 38.7Δ 22.8 |
| Human | 2.64 | 1–5; original rating | 15.9 |
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. | 3445.006 | −113.685 |
| Source linesThe number of non-empty source lines. | 50 | +20 |
| 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.826 | −7.239 |
Intercept 8.87 + feature contributions = -92.054 (log-odds).
Score = sigmoid(-92.054) = 0.
| Score | 0.069 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 106.98 | +0.922 |
| 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. | 106.941 | −0.864 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 44 | +0.785 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 51 | −0.769 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 44 | −0.589 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 49.907 | +0.288 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.124 | −0.265 |
Intercept 0.07 + feature contributions = -0.423 (log-odds).
Score = sigmoid(-0.423) = 0.396.
| Score | 0.212 |
|---|
| Score | 29 |
|---|
Run 1
The code follows a clear, repetitive structure typical of MD5 round implementations, which aids recognition for domain experts. Macro calls are consistent and each line contains one action. The round comments (/* Round 3 */) improve navigation. However, readability suffers from opaque macro/parameter names like MD5GG, MD5HH, and hex constants—intent is unclear without external context. Parameter ordering (d,a,b,c vs a,b,c,d) shifts between macro types, disrupting flow. The commented-out lines introduce ambiguity about whether they are placeholders, debug remnants, or future work. The closing brace and stray comment 'go byebye!' add casual tone and structural confusion. Overall, it is maintainable for someone versed in MD5 internals but less approachable for general code review.
Run 2
This code is nearly unreadable due to deeply cryptic naming conventions and unclear intent. While the structure follows a sequential round-based pattern with section comments, the variable names (a, b, c, d, b0-b15, MD5S22, etc.) are opaque without domain knowledge. Nesting is flat but the macro calls contain 7+ arguments each, making lines dense. Code length is verbose, though each line represents one operation. The parameters shift rotationally (a,b,c,d then d,a,b,c then c,d,a,b then b,c,d,a) which obscures reading flow. Comments are sparse and informal ('go byebye!'). The commented-out lines and misplaced comment about 'initial a check' create confusion. Constants like 0xc33707d6 lack explanation. The second function MD5_Reverse starts with a long parameter list spanning multiple lines, further reducing clarity. Without deep MD5 algorithm expertise, tracking the state transformation across lines is extremely difficult.
Run 3
The code shows organized MD5 round operations with numbered comments and clear section headers, which aids navigation. However, several factors reduce readability: comments are terse and rely on domain-specific knowledge; the function signature in MD5_Reverse is very long with 20 parameters spanning multiple lines without clear grouping; parameter names are cryptic (b0-b15, a,b,c,d); the commented-out code and informal comments like 'go byebye!' introduce ambiguity. The nesting is flat and each macro call occupies one line, which is good, but the repetitive macro calls lack explanatory context about the algorithm's purpose. Reading flow is interrupted by commented code and informal language. Overall, the structure is consistent but overly dependent on MD5-specific knowledge without sufficient explanatory comments or abstraction.
Run 1
Code Structure: Round comments and grouped state initialization provide logical organization, but the excerpt starts and ends mid-function and includes deferred, commented-out operations. Nesting: The visible code is flat and straightforward. Clarity of intent: MD5 macro names and step numbers identify the algorithm, but terse variables, unexplained hexadecimal constants, and the vague 'Reverses the MD5' comment obscure the exact purpose. Code length: Explicitly unrolled steps may be appropriate for optimized cryptographic code, but repetition and a long parameter list make scanning harder. Action granularity: Each line contains one macro invocation, assignment, or subtraction, giving consistent visual units, although macro internals are hidden. Reading flow: Sequential numbering and round separators support natural progression; excessive blank lines, uneven alignment, informal comments, and deferred steps interrupt it.
Run 2
Code Structure: Round labels and separate reverse function provide logical organization, but the excerpt starts and ends mid-function, limiting context. Nesting: Flat statements are easy to follow, with no deeply nested control flow. Clarity of intent: MD5 names and step numbers identify the algorithm, but opaque macros, short variable names, hexadecimal constants, and the vague reversal comment obscure details. Code length: Repeated calls may be appropriate for an unrolled algorithm, but the long parameter list and commented-out operations add visual bulk. Action granularity: Each line contains one macro call or assignment, making individual steps easy to locate. Reading flow: Consistent call patterns and numbered steps support sequential reading, while deferred operations, informal comments, and uneven whitespace interrupt it.
Run 3
Code Structure: Round labels and separation of forward operations from MD5_Reverse provide logical organization, but the excerpt is incomplete and includes deferred, commented-out steps. Nesting: Flat statements with no visible nested control flow are easy to scan. Clarity of intent: MD5 macro names and numbered steps identify the algorithm, but terse variables, unexplained constants, unavailable macro definitions, and the vague reversal comment obscure details. Code length: Repetitive unrolled operations may be appropriate for optimized hashing, though the long parameter list and excess blank lines reduce concision. Action granularity: Each visible statement performs one operation, although macros may hide additional actions. Reading flow: Consistent argument ordering and sequential step numbers support predictable reading; informal comments, mixed comment styles, and references to an unseen initial check interrupt that flow.