Sample
Schnappinger/argoUML/org.argouml.core.propertypanels.ui.EnumerationListModel
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 1 | 0–1; higher is more readable | 95.0Δ 25.5 |
| Scalabrino | 0.775 | 0–1; higher is more readable | 56.8Δ 12.6 |
| Dorn | 0.791 | 0–1; higher is more readable | 83.2Δ 13.7 |
| Mi | 0.58 | 0–1; higher is more readable | 54.8Δ 14.7 |
| LLOC | 6 | Logical lines; fewer is more readable | 79.7Δ 10.2 |
| DeepSeek V4 Pro | 17 | 0–20; mean of three runs | 66.8Δ 2.6 |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs | 73.8Δ 4.3 |
| BTTF | 0.724 | 0–1; higher is more readable | 87.1Δ 17.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) |
|---|---|---|
| Source linesThe number of non-empty source lines. | 67 | +26.8 |
| Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones. | 494.939 | −16.333 |
| 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.179 | −7.769 |
Intercept 8.87 + feature contributions = 11.568 (log-odds).
Score = sigmoid(11.568) = 1.
| Score | 0.775 |
|---|
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. | 68 | −1.371 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.018 | +0.77 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 66.848 | +0.525 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 75.662 | +0.416 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| 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. | 77.971 | +0.363 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 26 | +0.162 |
Intercept 0.07 + feature contributions = 1.332 (log-odds).
Score = sigmoid(1.332) = 0.791.
| Score | 0.58 |
|---|
| Score | 6 |
|---|
Run 1
The code is highly readable with clear structure and intent. The class has a single responsibility, and methods are concise with one action per line. Nesting is minimal and the flow is natural. License headers are long but separate from logic, and do not impact readability of the actual implementation. The only minor drawback is the lack of a null check or validation in buildModelList and isValidElement, but that does not significantly hurt clarity. Overall, the code is maintainable and easy to follow.
Run 2
The code is highly readable. It has a clear, logical structure with a standard license header, package declaration, and a single small class. The class is well-named and its purpose is evident from the context and Javadoc. There is no unnecessary nesting; the methods are flat and perform exactly one task each. The code length is minimal and avoids boilerplate. Each method contains a single statement, aligning with the action granularity criterion. The reading flow is natural: constructor, then list-building method, then validation method. The only minor drawback is the presence of two long copyright headers, which slightly disrupts the initial flow, but this is common in open-source projects and does not significantly impact readability. Overall, the code is concise, clear, and well-organized.
Run 3
The code is well-structured and readable. It has a clear class with a single responsibility, a simple constructor, and two concise overridden methods. Nesting is minimal, and intent is evident from method names and comments. Action granularity is appropriate—one meaningful operation per line. The main drawback is the excessive license header (over 40 lines) before the actual code, which disrupts reading flow and adds unnecessary length. The inline Javadoc is helpful but sparse. Overall, the logic is straightforward and maintainable.
Run 1
Code Structure: A small, cohesive class cleanly separates initialization, list construction, and element validation. Nesting: Methods are flat, with no nested control flow. Clarity of intent: Descriptive class and method names, the class documentation, and explicit overrides make the purpose clear, although inherited behavior and chained facade calls require some framework knowledge. Code length: The implementation is concise, but the extensive legal header and redundant constructor documentation add reading overhead. Action granularity: Each statement performs one clear operation on its own line. Reading flow: Consistent formatting and the natural constructor-to-method ordering make the implementation easy to follow.
Run 2
Code Structure: A focused class with clearly separated constructor, list-building, and validation methods. Nesting: No nested control flow; method bodies are flat and simple. Clarity of intent: Descriptive class and method names make the purpose apparent, although Object parameters and framework dependencies leave some context implicit. Code length: Implementation is concise, but the extensive license header dominates the file and delays reaching the functional code. Action granularity: Each statement performs one clear operation, with short method chains that remain easy to understand. Reading flow: Consistent formatting and a natural constructor-to-behavior order support smooth reading; redundant constructor documentation adds minor noise.
Run 3
Code Structure: The class is logically organized, with a constructor followed by two focused overrides. Nesting: There is no nested control flow, making the implementation easy to scan. Clarity of intent: Descriptive class and method names, plus the class documentation, clearly communicate the model's purpose; generic Object parameters and framework dependencies slightly limit standalone understanding. Code length: The implementation is concise, although the extensive license header dominates the file and the constructor comment adds little information. Action granularity: Each statement occupies its own line and performs a focused operation. Reading flow: Consistent formatting and conventional Java organization provide a natural progression from initialization to list construction and element validation.