Sample
int-7c34d8acb6f3-I08
Select one of ten high-readability unrelated code templates per class
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.529 | 0–1; higher is more readable |
| Dorn | 0.626 | 0–1; higher is more readable |
| Mi | 0.561 | 0–1; higher is more readable |
| LLOC | 1 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 19 | 0–20; mean of three runs |
| GPT-6.1 Sol | 19.33 | 0–20; mean of three runs |
| BTTF | 0.605 | 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. | 351.862 | −11.611 |
| Source linesThe number of non-empty source lines. | 25 | +10 |
| 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.761 | −7.141 |
Intercept 8.87 + feature contributions = 0.118 (log-odds).
Score = sigmoid(0.118) = 0.529.
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Indentation frequencyHow rapidly indentation changes from line to line. | 1 | −0.703 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 91.462 | +0.671 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.04 | +0.551 |
| 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. | 99 | −0.528 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 1 | +0.398 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 26 | +0.116 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 24.9 | −0.062 |
Intercept 0.07 + feature contributions = 0.514 (log-odds).
Score = sigmoid(0.514) = 0.626.
| Score | 0.561 |
|---|
| Score | 1 |
|---|
Run 1
The code is highly readable. It has a clear, logical structure with imports at the top, followed by a comprehensive Javadoc explaining the annotation's purpose and constraints. The annotation definition is minimal and focused. Nesting is flat, with no unnecessary complexity. Clarity of intent is excellent, with clear documentation about parameter requirements and serial invocation behavior. The code is concise, containing no redundant elements. Action granularity is appropriate, with each annotation on its own line. Reading flow is natural, from imports to documentation to implementation. Minor deductions only for unused imports (Target, RetentionPolicy are used indirectly but ElementType is fully qualified).
Run 2
The code is highly readable due to its clear structure, flat hierarchy, and concise single-purpose declaration. The package and import statements are minimal and logically ordered. Javadoc comments clearly explain the annotation's purpose, constraints, and behavior, enhancing clarity of intent. The annotation definition itself is compact, with each meta-annotation on its own line, contributing to excellent action granularity and reading flow. There is no unnecessary nesting or overly long code. The only minor deduction is that the Javadoc could be slightly more concise, but this does not meaningfully impact readability. Overall, the code is nearly ideal for its purpose.
Run 3
The code is exceptionally readable. The package declaration and imports are minimal and clearly organized. The Javadoc provides thorough, well-structured documentation of the annotation's purpose, constraints, and behavior, with appropriate use of HTML tags and cross-references. Annotations are logically grouped — retention, target, and keep — each on its own line. The interface declaration is concise and unambiguous. The code exhibits flat nesting, strong clarity of intent, appropriate length for an annotation definition, and natural reading flow. Only minor improvement could be separating imports with a blank line, but this is negligible. Overall, this is an exemplary model of clean, well-documented Java code.
Run 1
Code Structure: Logically organized into package, imports, documentation, annotations, and declaration; blank lines between sections would improve separation. Nesting: No nested logic, making it easy to scan. Clarity of intent: The Subscribe name, descriptive Javadoc, and explicit retention and target annotations clearly explain its purpose and usage constraints. Code length: Minimal implementation with relevant documentation rather than unnecessary code. Action granularity: Each import and annotation occupies its own line; the compact empty declaration is appropriate. Reading flow: Natural top-to-bottom progression from context to contract to declaration.
Run 2
Code Structure: Clean, conventional organization with package, imports, documentation, annotations, and declaration. Nesting: No nested logic, making the code immediately accessible. Clarity of intent: The Subscribe name and Javadoc clearly explain its purpose, parameter constraints, and concurrency behavior. Code length: Minimal implementation with appropriately detailed documentation. Action granularity: Each import and annotation occupies its own line; the empty declaration is suitably compact. Reading flow: Natural top-to-bottom progression, though blank lines between the package, imports, and documentation would improve visual separation.
Run 3
Code Structure: Clearly organized into package, imports, documentation, metadata annotations, and declaration. Nesting: No nested logic or unnecessary blocks. Clarity of intent: The Subscribe name and Javadoc clearly explain its purpose, parameter requirements, and concurrency behavior. Code length: Minimal implementation with useful, proportionate documentation. Action granularity: Each import and metadata annotation occupies its own line; the empty declaration is appropriately compact. Reading flow: Follows standard Java conventions, progressing naturally from context to behavior and declaration.