Sample
int-f012459e6188-I01
Remove line comments, block comments, and Javadoc
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.126 | 0–1; higher is more readable |
| Scalabrino | 0.424 | 0–1; higher is more readable |
| Dorn | 0.756 | 0–1; higher is more readable |
| Mi | 0.587 | 0–1; higher is more readable |
| LLOC | 12 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 18 | 0–20; mean of three runs |
| GPT-6.1 Sol | 17 | 0–20; mean of three runs |
| BTTF | 0.501 | 0–1; higher is more readable |
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. | 840.254 | −27.728 |
| Source linesThe number of non-empty source lines. | 60 | +24 |
| 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.716 | −7.074 |
Intercept 8.87 + feature contributions = -1.933 (log-odds).
Score = sigmoid(-1.933) = 0.126.
| Score | 0.424 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 60 | +1.338 |
| 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. | 61.984 | +1.04 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 58 | −1.017 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 59.921 | +0.428 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.13 | −0.321 |
Intercept 0.07 + feature contributions = 1.131 (log-odds).
Score = sigmoid(1.131) = 0.756.
| Score | 0.587 |
|---|
| Score | 12 |
|---|
Run 1
The code is a well-structured interface with a clear, logical organization. It defines related methods in a cohesive manner, and the methods are grouped by functionality (adjacency, edges, mutations), making the intent easy to understand. Nesting is flat—there are no nested conditionals or deep control structures. The purpose of each method is evident from its name, and the use of generic types and annotations adds clarity without clutter. Code length is concise: no unnecessary code or comments, just the essential API. Each method declaration is a single action, contributing to high action granularity. The reading flow is natural, following a logical progression from query methods to mutation methods. Minor deductions are for slightly excessive blank lines and sparse documentation, but these do not significantly hinder readability.
Run 2
The code is a well-structured Java interface with clear purpose and excellent readability. It logically groups related methods (adjacent nodes, predecessors/successors, incident/in/out edges) and maintains consistent naming conventions. Nesting is minimal, and each method signature is concise with one action per declaration. The use of annotations (@CanIgnoreReturnValue, @Nullable) adds clarity about method behavior without clutter. The interface is appropriately short, avoiding unnecessary complexity. Minor spacing inconsistencies and blank lines between method groups slightly disrupt flow, but overall the code is highly readable, with natural organization and unambiguous intent.
Run 3
The code is highly readable due to its well-structured interface definition. Methods are logically grouped by functionality (node queries, edge queries, mutations), and the flat hierarchy avoids unnecessary nesting. Naming conventions clearly communicate intent, making the purpose of each method unambiguous. The code is concise, with one method per line and no redundant logic. Action granularity is appropriate, with each method representing a single, focused action. Reading flow is natural, moving from general queries to specific mutations. Minor deductions for excessive blank lines and the absence of Javadoc comments, which slightly impact polish but do not hinder comprehension.
Run 1
Code Structure: The interface logically groups node queries, edge queries, and mutation operations. Nesting: No nested control flow; declarations are flat and easy to scan. Clarity of intent: Descriptive method names and typed parameters communicate purpose, though generic type names and self-loop handling lack explanatory documentation. Code length: Declarations are concise, but excessive blank lines unnecessarily lengthen the listing. Action granularity: Each method declaration represents a single operation, with annotations clearly associated with relevant methods. Reading flow: Ordering is natural, moving from queries to removals and additions, but inconsistent whitespace interrupts scanning.
Run 2
Code Structure: The interface logically groups node queries, edge queries, and mutation operations. Nesting: Entirely flat aside from the interface body, making it easy to scan. Clarity of intent: Descriptive method names and generic node/edge types communicate purpose, though self-loop handling and nullable return semantics lack explanatory documentation. Code length: Declarations are concise, but excessive blank lines unnecessarily lengthen the snippet. Action granularity: Each method declaration occupies its own line, with annotations clearly associated with methods. Reading flow: Method ordering is natural, but inconsistent spacing and large blank gaps interrupt the flow.
Run 3
Code Structure: The interface logically groups node queries, edge queries, and mutation methods. Nesting: Entirely flat apart from the interface declaration, making it easy to scan. Clarity of intent: Descriptive method names and generic types communicate purpose, though the self-loop flag and nullable return behavior lack explanatory documentation. Code length: Declarations are concise, but excessive blank lines unnecessarily lengthen the file. Action granularity: Each method declaration occupies its own line, with annotations clearly associated with the relevant methods. Reading flow: Method ordering is natural and consistent, but irregular spacing interrupts the visual flow.