Sample

Dorn/java/177

Human rating uses the original dataset scale.

DatasetDorn
Human3.32
Lines50

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett0.0460–1; higher is more readable
72.1Δ 25.1
Scalabrino0.80–1; higher is more readable
87.2Δ 40.1
Dorn0.330–1; higher is more readable
26.5Δ 20.6
Mi0.1040–1; higher is more readable
11.4Δ 35.7
LLOC15Logical lines; fewer is more readable
46.5Δ 0.6
DeepSeek V4 Pro6.670–20; mean of three runs
20.9Δ 26.2
GPT-6.1 Sol120–20; mean of three runs
19.9Δ 27.2
BTTF0.4850–1; higher is more readable
40.9Δ 6.1
Human3.321–5; original rating
47.1

Views

Download official ZIP ↗

Select the downloaded ZIP or its extracted folder. Files stay in your browser.

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(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.739.342−24.398
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.997−7.496

Intercept 8.87 + feature contributions = -3.024 (log-odds).
Score = sigmoid(-3.024) = 0.046.

Score0.8

Feature contributions

FeatureValueContribution
(log-odds)
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.135.98−2.094
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.135.961+1.389
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.51−0.769
Indentation frequencyHow rapidly indentation changes from line to line.41+0.681
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.43−0.566
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.067+0.294
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.49.81+0.286

Intercept 0.07 + feature contributions = -0.709 (log-odds).
Score = sigmoid(-0.709) = 0.33.

Score0.104
Score15
Run 1

The code suffers from poor readability due to fragmented method signatures spread across multiple lines, excessive whitespace, and unclear parameter names like 'find' and 'match'. The intent is somewhat documented but the implementation is scattered. There's inconsistent indentation and formatting throughout. The nested logic is shallow but the overall structure lacks cohesion. Variables are named generically, making the purpose ambiguous without reading the comments carefully. The method signatures breaking mid-name and mid-parameter list significantly disrupts reading flow. Some dead code remains in commented-out System.out.println statements. Action granularity is moderate but the unusual line breaks make even simple statements harder to follow. The code would benefit from standard Java formatting conventions, clearer variable names, and consolidated logic.

Run 2

The code shows some positive elements like Javadoc comments and relatively flat method bodies, but suffers from inconsistent formatting that harms readability. The method signatures are broken across multiple lines awkwardly with misplaced throws clauses. The match string uses regex lookarounds and group captures that are unclear without domain knowledge. The isValuePresent method reads the entire file just to check a match, which in setValue causes duplicate file reads - this obscures intent. Method names are descriptive but the flow between find, match, and value parameters is confusing. The line-by-line structure is okay, but the overall organization feels fragmented. There are commented-out debug statements adding noise. The code mixes regex construction with file I/O and lacks clear separation of concerns, making the reading flow disjointed and the purpose harder to grasp at a glance.

Run 3

The code is poorly readable due to inconsistent and confusing formatting. Method signatures are awkwardly split across multiple lines (e.g., 'private boolean' then 'isValuePresent' then parameters), disrupting natural reading flow. Null checks and resource handling are incomplete, and the regex matching in isValuePresent uses matches() where find() might be intended, adding ambiguity. Action granularity is inconsistent; some methods are concise while others mix concerns across comments that hide debugging code. The intent of the find/match/value trio is explained only in a doc comment that itself is awkwardly formatted and fails to clarify practical usage. Nesting is low, but structure suffers from dead code and unnecessary method length. Overall, the code obscures its purpose rather than making it clear.

Run 1

Code Structure: Helper methods separate checking, updating, and reading content, but the excerpt begins and ends mid-method, limiting structural clarity. Nesting: Only one conditional is visible, keeping control flow shallow. Clarity of intent: Method names and parameter documentation explain the update operation, though generic names such as find and match and regex capture-group replacements require interpretation. Code length: The logic is reasonably concise, but excessive blank lines, fragmented method declarations, and commented-out debugging statements add clutter. Action granularity: Statements generally perform one action per line, making individual steps easy to follow. Reading flow: The update sequence is logical, but inconsistent spacing and unusually split signatures interrupt scanning; reading file content both in setValue and isValuePresent also makes the flow less direct.

Run 2

Code Structure: Helper methods logically separate checking, replacing, and reading content, but the fragment starts and ends mid-method, limiting context. Nesting: The visible logic is shallow, with only one conditional. Clarity of intent: Method names and parameter documentation explain the update process, though generic names such as find and match, regex capture groups, and the abbreviated fr require interpretation. Code length: The logic is reasonably concise, but excessive blank lines, split method declarations, and commented-out debugging statements add clutter. Action granularity: Statements generally perform one action per line. Reading flow: The sequence within setValue is straightforward, but unusual declaration formatting and inconsistent spacing interrupt scanning. Reading file content both in setValue and isValuePresent also makes the data flow less direct.

Run 3

Code Structure: Helper methods separate checking, replacement, and file access logically, although the fragment starts and ends mid-method. Nesting: Shallow, with only one conditional block. Clarity of intent: Method names and parameter documentation explain the main behavior, but generic names such as find and match and regex capture-group dependencies require interpretation. Code length: Fairly concise, though excessive blank lines, fragmented method declarations, and commented-out debugging add clutter. Action granularity: Mostly one action per line, making operations easy to distinguish. Reading flow: The check-and-replace sequence is understandable, but inconsistent spacing and unusual declaration formatting interrupt scanning. Reading the file again inside isValuePresent also makes the data flow less direct.