Sample
Schnappinger/argoUML/org.argouml.uml.cognitive.critics.CrMultiComposite
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.01 | 0–1; higher is more readable | 70.9Δ 1.4 |
| Scalabrino | 0.716 | 0–1; higher is more readable | 41.4Δ 28.0 |
| Dorn | 0.421 | 0–1; higher is more readable | 57.1Δ 12.4 |
| Mi | 0.559 | 0–1; higher is more readable | 45.2Δ 24.3 |
| LLOC | 19 | Logical lines; fewer is more readable | 61.6Δ 7.9 |
| DeepSeek V4 Pro | 16.67 | 0–20; mean of three runs | 59.9Δ 9.6 |
| GPT-6.1 Sol | 15.67 | 0–20; mean of three runs | 32.3Δ 37.1 |
| BTTF | 0.615 | 0–1; higher is more readable | 60.7Δ 8.7 |
| Human | 3.95 | 1–4; original rating | 69.5 |
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. | 1468.788 | −48.47 |
| Source linesThe number of non-empty source lines. | 107 | +42.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. | 5.195 | −7.793 |
Intercept 8.87 + feature contributions = -4.593 (log-odds).
Score = sigmoid(-4.593) = 0.01.
| Score | 0.716 |
|---|
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. | 108 | −2.788 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 55 | +1.165 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 106.812 | +1.083 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 55 | −0.841 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 94.12 | +0.714 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.032 | +0.635 |
| 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. | 94.972 | −0.357 |
Intercept 0.07 + feature contributions = -0.319 (log-odds).
Score = sigmoid(-0.319) = 0.421.
| Score | 0.559 |
|---|
| Score | 19 |
|---|
Run 1
The code is highly readable with a clear, logical structure. The class has a single responsibility and follows standard Java conventions. Methods are short with descriptive names, and the predicate2 method uses minimal nesting (three levels) but remains easy to follow. Each line performs one action, and comments are concise and informative. The only deductions are for the lengthy copyright header (which is standard but adds noise) and the shallow nesting in predicate2, which could be simplified with an early return or combined condition. Overall, the code flows naturally from constructor to logic to helper methods, making intent clear.
Run 2
The code is generally readable with clear class structure, logical organization, and well-documented methods. The header comments are lengthy but standard for open-source projects. The constructor cleanly separates setup actions with one method call per line. The predicate2 method uses minimal nesting (three levels) and follows a clear validation flow, though it could be simplified with early returns or logical AND operators. Variable names like 'dm' and 'dsgr' are somewhat cryptic and reduce clarity. Method documentation via Javadoc comments helps establish intent. The getWizardClass and getCriticizedDesignMaterials methods are concise and self-explanatory. Overall, the code maintains good readability with only minor issues around parameter naming and the nested if-structure in predicate2.
Run 3
The code is well-structured and readable. It follows a clear class organization with a constructor and three overridden methods, each with single responsibilities. The nesting level is shallow (maximum depth of three if statements in predicate2), and the intent of each method is evident from its name and Javadoc comments. The code is concise with no unnecessary verbosity. Each logical action occupies its own line, and the reading flow is natural—fields are declared at the top, constructor follows, then methods in logical order. The only minor deductions are the long copyright header, which slightly delays the code start, and the predicate method could be simplified, but overall this is very clean and easily maintainable code.
Run 1
Code Structure: Clearly organized into a constructor and short, focused overridden methods. Nesting: The predicate uses three nested conditionals for a simple check; a combined condition or early returns would be easier to scan. Clarity of intent: UML references and descriptive API calls explain the rule, but names such as dm, dsgr, and ret are vague, and predicate2 lacks a plain-language explanation. Code length: Implementation is concise, although extensive license text and boilerplate comments add visual bulk. Action granularity: Statements generally perform one action per line, making individual operations easy to follow. Reading flow: Consistent formatting and conventional method ordering support natural reading, while repeated facade calls and nested checks slightly interrupt the flow.
Run 2
Code Structure: The class is logically organized into a constructor and small, focused overridden methods. Nesting: The predicate uses three nested conditionals for a simple conjunction; combining conditions would improve readability. Clarity of intent: UML references, descriptive API calls, and named result constants clarify the validation rule, though names such as dm, dsgr, and ret are vague. Code length: Implementation methods are concise, but extensive license text and boilerplate comments add visual bulk, while the predicate could be shorter. Action granularity: Statements generally perform one action per line, making individual operations easy to follow. Reading flow: Consistent formatting and conventional method organization support natural reading, although repeated facade calls and nested checks slightly interrupt the flow.
Run 3
Code Structure: Well organized into a constructor and small, focused overrides, with consistent formatting. Nesting: The predicate uses three nested conditionals where a combined condition or early returns would be easier to scan. Clarity of intent: Domain-specific method names and UML rule references explain the purpose, although dm, dsgr, and ret are terse and the multiplicity constraint is not explained directly. Code length: Implementation is concise, but extensive license text and boilerplate comments add visual overhead. Action granularity: Statements generally perform one action per line, making execution easy to follow. Reading flow: Method ordering and spacing are natural; repeated facade calls and the temporary problem variable make the central predicate slightly more cumbersome than necessary.