Sample
Dorn/java/144
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0 | 0–1; higher is more readable | 3.9Δ 0.6 |
| Scalabrino | 0.421 | 0–1; higher is more readable | 31.8Δ 28.4 |
| Dorn | 0.492 | 0–1; higher is more readable | 42.6Δ 39.3 |
| Mi | 0.135 | 0–1; higher is more readable | 13.9Δ 10.6 |
| LLOC | 11 | Logical lines; fewer is more readable | 57.0Δ 53.6 |
| DeepSeek V4 Pro | 10 | 0–20; mean of three runs | 40.9Δ 37.6 |
| GPT-6.1 Sol | 15.67 | 0–20; mean of three runs | 61.6Δ 58.2 |
| BTTF | 0.417 | 0–1; higher is more readable | 26.7Δ 23.4 |
| Human | 1.99 | 1–5; original rating | 3.3 |
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. | 2841.885 | −93.782 |
| 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.892 | −7.338 |
Intercept 8.87 + feature contributions = -72.25 (log-odds).
Score = sigmoid(-72.25) = 0.
| Score | 0.421 |
|---|
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 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 41 | +0.681 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 42 | −0.451 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 47.913 | +0.26 |
| 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. | 91 | −0.189 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.096 | +0.005 |
Intercept 0.07 + feature contributions = -0.03 (log-odds).
Score = sigmoid(-0.03) = 0.492.
| Score | 0.135 |
|---|
| Score | 11 |
|---|
Run 1
The code is a list of method signatures from a service interface. Structure is consistent and each method is clearly separated, which helps readability. Nesting is flat, but the use of fully qualified class names (e.g., com.liferay.portal.kernel.exception.PortalException) creates very long lines and repetitive visual noise, making the intent harder to scan quickly. Clarity of intent is moderate: method names are descriptive, but annotations and throws clauses dominate the visual field. Code length is unnecessarily verbose due to lack of imports. Action granularity is good—each method is on its own logical block. Reading flow is disrupted by line breaks in awkward places (e.g., before 'throws') and inconsistent indentation in the first line. Overall, it is readable but would be significantly improved with imports and cleaner formatting.
Run 2
The code is a service interface fragment showing moderate readability. Structure is logical and consistent, with related methods grouped. Nesting is flat. However, clarity suffers from fully-qualified class names in every signature, creating noisy lines. Repetitive throws clauses and @Transactional annotations inflate length. Each method signature is one logical action but visually cluttered. Reading flow is disrupted by the long qualified types and line wraps, making it harder to scan. Importing types would greatly improve conciseness and readability.
Run 3
This code snippet is difficult to read due to several factors. The structure is repetitive and monotonous, with fully qualified class names creating excessive verbosity. Nesting is flat, which is good, but the lack of imports makes the code feel cumbersome and harder to scan. Clarity of intent is present in method names, but the intent is obscured by the verbose exception declarations and class paths. The code length is unnecessarily long due to the absence of import statements. Action granularity is acceptable, as each method signature is on its own logical block, but line breaks within parameters feel arbitrary. Reading flow is disjointed, as the eye must work through long package names to understand types. Using imports would significantly improve readability by reducing noise and allowing the reader to focus on method signatures and business logic.
Run 1
Code Structure: Related service declarations and overloads are grouped logically, though the opening orphaned throws clause makes the snippet incomplete. Nesting: Flat declarations with no nested control flow are easy to scan. Clarity of intent: Descriptive method and parameter names clearly indicate retrieval, counting, and deletion operations; transaction annotations communicate read-only behavior. Code length: Fully qualified types and repeated annotations and exception declarations add substantial visual verbosity. Action granularity: Each declaration represents one operation, with parameters and exceptions split across lines rather than multiple operations compressed together. Reading flow: Consistent spacing and grouping support a natural flow, but lengthy type names and somewhat awkward line wrapping interrupt scanning.
Run 2
Code Structure: Related service declarations are logically grouped, with overloads adjacent. Nesting: No nested control flow; declarations are flat and easy to scan. Clarity of intent: Descriptive method and parameter names communicate retrieval, deletion, and counting operations, while annotations clarify read-only behavior. Code length: Fully qualified types and repeated annotations and exception declarations add substantial visual verbosity; imports would improve concision. Action granularity: Each method declaration represents a single operation, with parameters and exceptions separated consistently across lines. Reading flow: Uniform formatting and blank lines support predictable reading, but long type names interrupt scanning. The opening orphaned throws clause makes the excerpt incomplete and slightly confusing.
Run 3
Code Structure: Method declarations are consistently organized, with related overloads grouped together. Nesting: No nested control flow, making the interface easy to scan. Clarity of intent: Descriptive method and parameter names communicate retrieval, counting, and deletion purposes; transaction annotations clarify read-only behavior. Code length: Fully qualified types and repeated annotations and exception declarations introduce substantial visual verbosity. Action granularity: Each declaration represents one operation, with parameters and exceptions separated across lines rather than combining actions. Reading flow: Consistent spacing and formatting support predictable reading, but long type names interrupt scanning, and the initial orphaned throws clause makes the fragment feel incomplete.