Sample
int-cd4f01154c2e-SRC
Unmodified source class
Scores
| Method | Score | Scale |
|---|---|---|
| Posnett | 0.016 | 0–1; higher is more readable |
| Scalabrino | 0.907 | 0–1; higher is more readable |
| Dorn | 0.817 | 0–1; higher is more readable |
| Mi | 0.616 | 0–1; higher is more readable |
| LLOC | 27 | Logical lines; fewer is more readable |
| DeepSeek V4 Pro | 17.67 | 0–20; mean of three runs |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs |
| BTTF | 0.578 | 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. | 1820.128 | −60.064 |
| Source linesThe number of non-empty source lines. | 136 | +54.4 |
| 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.88 | −7.319 |
Intercept 8.87 + feature contributions = -4.114 (log-odds).
Score = sigmoid(-4.114) = 0.016.
| Score | 0.907 |
|---|
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. | 137 | −3.814 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 82 | +2.099 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 135.793 | +1.488 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.043 | +0.519 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 80.92 | +0.501 |
| 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. | 80.964 | +0.236 |
Intercept 0.07 + feature contributions = 1.498 (log-odds).
Score = sigmoid(1.498) = 0.817.
| Score | 0.616 |
|---|
| Score | 27 |
|---|
Run 1
The code is highly readable with clear class structure, well-documented Javadoc, and logical organization of fields, constructors, and methods. The class follows Spring conventions with minimal nesting (only one synchronized block and one null check condition). Intent is explicit through comprehensive documentation and descriptive method names. Code length is appropriate - concise without being overly compact. Each action is clearly separated per line, and the reading flow follows a natural progression from constructors to setters to the pointcut initialization logic. The use of a serializable monitor object for synchronization is well-documented and properly encapsulated. Minor deductions for slight complexity in the lazy initialization pattern and the multiple constructor overloads, but overall this represents exemplary Java code.
Run 2
The code is well-structured with clear separation of concerns, following Spring framework conventions. It has minimal nesting (only one synchronized block with a null check). Intent is clear through descriptive method names and comprehensive Javadoc. The class is concise and focused on a single responsibility. Each action is on its own line, and the reading flow is natural, moving from fields to constructors to setters to business logic. The only minor deductions are for the somewhat redundant constructors and the SerializableMonitor pattern which, while idiomatic for Spring, adds slight complexity.
Run 3
The code is highly readable with clear structure and intent. The class follows a logical organization: fields, constructors, setters, and overridden methods, each with concise Javadoc explaining purpose and usage. Nesting is minimal—only a single synchronized block with an if-check inside, which is appropriate. Clarity of intent is strong due to descriptive method/field names and documentation, though the lazy initialization pattern with a monitor object may require brief study. Code length is reasonable and not unnecessarily verbose, with each method performing one focused action. Action granularity is good, with one primary operation per line. Reading flow is natural, from field declarations through constructors to behavior methods. Minor deductions stem from slight complexity around the synchronized initialization pattern and the use of a custom serializable monitor rather than relying on simpler synchronization on the pointcut field, which adds cognitive overhead without major benefit.
Run 1
Code Structure: Fields, constructors, configuration methods, pointcut initialization, and helpers are logically grouped. Nesting: Most methods are flat; getPointcut has three nested blocks for synchronization and conditional initialization, but remains easy to follow. Clarity of intent: Descriptive names and helpful Javadocs clearly explain pattern matching, delegation, and lazy initialization. The fact that changing patterns after initialization does not update the existing pointcut is less obvious. Code length: Implementation is concise, although constructor documentation and whitespace add some repetition. Action granularity: Each statement performs a focused action, with no compressed multi-statement lines. Reading flow: Consistent formatting and method ordering support natural reading; the wrapped toString expression and specialized nullable-array annotation introduce minor friction.
Run 2
Code Structure: Fields, constructors, configuration methods, and pointcut creation are logically grouped with consistent spacing. Nesting: Most methods are flat; getPointcut has modest nesting from synchronization and two conditional checks. Clarity of intent: Descriptive names and thorough Javadoc clearly explain pattern configuration, lazy initialization, and the serializable monitor. Code length: Implementations are concise, though repeated constructor documentation and generous whitespace increase scanning length slightly. Action granularity: Statements generally perform one action per line; the wrapped toString expression remains straightforward. Reading flow: The progression from construction to configuration and initialization is natural. Minor readability costs include the unusual array nullability annotation syntax and the need to understand inherited advisor behavior.
Run 3
Code Structure: Fields, constructors, configuration methods, pointcut initialization, and helpers are logically grouped. Nesting: Most methods are flat; getPointcut has moderate nesting from synchronization and two conditionals, but remains easy to follow. Clarity of intent: Descriptive names and useful Javadoc clearly explain configuration, lazy initialization, and the serializable monitor. Code length: Implementation methods are concise, though repeated constructor documentation and generous spacing increase overall length. Action granularity: Statements generally perform one action per line, with no compressed logic. Reading flow: Consistent formatting and straightforward delegation provide a natural progression. Minor friction comes from the nested initialization block, the wrapped toString expression, and reliance on superclass behavior.