File Complexity Overall
  • There are 2,325 files with units, with 486,593 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 0 complex files (McCabe index sum 126-250; 0 lines of code)
    • 18 medium complex files (McCabe index sum 51-125; 26,190 lines of code)
    • 114 slightly complex files (McCabe index sum 26-50; 72,026 lines of code)
    • 2,193 simple files (McCabe index sum 1-25; 388,377 lines of code)
  • 121 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 0% | 5% | 14% | 79%
Legend:
251+
126-250
51-125
26-50
1-25


explore: grouped by folders | grouped by complexity
File Complexity per Extension
251+
126-250
51-125
26-50
1-25
kt0% | 0% | 5% | 14% | 79%
java0% | 0% | 10% | 0% | 89%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
anthropic-java-core0% | 0% | 5% | 14% | 79%
anthropic-java-example0% | 0% | 10% | 0% | 89%
anthropic-java-bedrock0% | 0% | 0% | 100% | 0%
anthropic-java-aws0% | 0% | 0% | 76% | 23%
anthropic-java-client-okhttp0% | 0% | 0% | 0% | 100%
anthropic-java-detekt-rules0% | 0% | 0% | 0% | 100%
anthropic-java-mcp0% | 0% | 0% | 0% | 100%
buildSrc0% | 0% | 0% | 0% | 100%
anthropic-java-google-cloud0% | 0% | 0% | 0% | 100%
anthropic-java-vertex0% | 0% | 0% | 0% | 100%
anthropic-java-foundry0% | 0% | 0% | 0% | 100%
anthropic-java-ecosystem-test0% | 0% | 0% | 0% | 100%
Most Complex Files (Top 50)

The McCabe index of a file grows with its size: per 100 lines tells a large but plain file from a dense one, and most complex unit whether the complexity sits in one unit or is spread over many.

File# lines# unitsMcCabe index
(sum)
per 100
lines
most complex
unit
MessageCountTokensParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
2387 60 116 5 30
BetaWebhookEventData.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/webhooks
1893 60 107 6 46
BetaManagedAgentsStreamSessionThreadEvents.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions/threads
2296 61 101 4 39
BetaManagedAgentsStreamSessionEvents.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions/events
2196 61 101 5 39
BetaManagedAgentsSessionEvent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions/events
2023 59 97 5 37
BatchCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages/batches
1829 26 81 4 29
MessageCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
1910 30 77 4 28
BetaMemoryToolExample.java
in anthropic-java-example/src/main/java/com/anthropic/example
293 13 66 23 15
SessionCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions
1299 32 65 5 11
BetaManagedAgentsDeploymentRun.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/deploymentruns
1368 33 64 5 18
BetaManagedAgentsDeploymentPausedReasonError.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/deployments
879 47 64 7 16
BetaResponseToolUnion.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
1307 33 62 5 30
BetaSpendSummary.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/spendlimits
1072 27 60 6 11
BetaToolUnion.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
1206 31 60 5 30
BetaContentBlockParam.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
1105 32 59 5 26
BetaPlugin.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/plugins
1045 22 57 5 22
BetaRawContentBlockStartEvent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
949 28 54 6 20
DeploymentUpdateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/deployments
1133 21 51 5 13
DeploymentCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/deployments
1106 21 50 5 13
BetaManagedAgentsAgent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/agents
940 17 49 5 18
BatchCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages/batches
1224 10 49 4 22
BetaManagedAgentsSessionErrorEvent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions/events
882 24 48 5 15
MessageCountTokensTool.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
891 26 48 5 23
BetaWebFetchUrlSources.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
850 23 47 6 6
AgentUpdateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/agents
1065 17 47 4 13
WebFetchUrlSources.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
850 23 47 6 6
ToolUnion.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
865 24 46 5 23
BetaContentBlock.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
802 24 45 6 20
AgentCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/agents
1021 17 45 4 12
BetaManagedAgentsSessionAgent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions
816 17 43 5 14
BetaManagedAgentsSessionThreadAgent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/agents
778 16 41 5 13
ContentBlockParam.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
752 22 41 5 18
BetaTextEditorCodeExecutionToolResultBlockParam.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
532 29 40 8 7
BetaManagedAgentsDeployment.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/deployments
734 17 40 5 20
MessageCreateParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
1191 9 40 3 21
TextEditorCodeExecutionToolResultBlockParam.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
517 29 40 8 7
RawContentBlockStartEvent.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
729 20 40 5 14
BetaApiKey.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/apikeys
780 14 39 5 14
UserCostReportListParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/analytics/usercostreport
793 7 39 5 23
UserUsageReportListParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/analytics/userusagereport
793 7 39 5 23
StructuredContentBlock.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
235 36 39 17 4
BetaMessageAccumulator.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/helpers
419 25 39 9 10
ApiKey.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/organization/apikeys
742 14 38 5 13
BetaManagedAgentsAgentWithOverridesParams.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/sessions
734 16 37 5 11
BetaPluginMarketplace.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/pluginmarketplaces
737 13 36 5 13
BetaToolResultBlockParam.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
648 16 36 6 9
BetaUsage.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/messages
824 11 36 4 15
ToolResultBlockParam.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/messages
634 16 36 6 9
ExternalKey.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/organization/externalkeys
660 14 35 5 11
IncreaseRequestApproveResponse.kt
in anthropic-java-core/src/main/kotlin/com/anthropic/models/beta/organization/spendlimits/increaserequests
686 13 35 5 13
About This Analysis
  • File complexity is the sum of the McCabe indexes (conditional complexity) of the units (methods, functions...) in a file.
  • Files are classified in five categories based on that sum: 1-25 (simple files), 26-50 (slightly complex files), 51-125 (medium complex files), 126-250 (complex files), 251+ (very complex files). The default bands are five times the unit complexity bands, as a file is a group of units.
  • Only main code files with units are classified. Files without units (languages without unit analysis, or files without functions) have no complexity to measure and are left out rather than counted as simple.
  • A very complex file holds many decisions, which often means it has too many responsibilities: a candidate to split, and a place where changes need more testing.
Learn more...