File Complexity Overall
  • There are 127 files with units, with 9,526 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)
    • 1 medium complex files (McCabe index sum 51-125; 234 lines of code)
    • 3 slightly complex files (McCabe index sum 26-50; 1,343 lines of code)
    • 123 simple files (McCabe index sum 1-25; 7,949 lines of code)
  • 177 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 0% | 2% | 14% | 83%
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
java0% | 0% | 15% | 0% | 84%
kt0% | 0% | 0% | 14% | 85%
py0% | 0% | 0% | 85% | 14%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
graphql-error-types0% | 0% | 87% | 0% | 12%
graphql-dgs-spring-graphql0% | 0% | 0% | 46% | 53%
graphql-dgs-spring-boot-micrometer0% | 0% | 0% | 38% | 61%
scripts0% | 0% | 0% | 85% | 14%
graphql-dgs0% | 0% | 0% | 0% | 100%
graphql-dgs-client0% | 0% | 0% | 0% | 100%
graphql-dgs-example-shared0% | 0% | 0% | 0% | 100%
graphql-dgs-extended-scalars0% | 0% | 0% | 0% | 100%
graphql-dgs-spring-graphql-example-java0% | 0% | 0% | 0% | 100%
graphql-dgs-reactive0% | 0% | 0% | 0% | 100%
graphql-dgs-spring-graphql-example-java-webflux0% | 0% | 0% | 0% | 100%
graphql-dgs-pagination0% | 0% | 0% | 0% | 100%
graphql-dgs-extended-validation0% | 0% | 0% | 0% | 100%
graphql-dgs-example-jackson-both0% | 0% | 0% | 0% | 100%
graphql-dgs-example-jackson3-only0% | 0% | 0% | 0% | 100%
graphql-dgs-example-jackson2-only0% | 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
TypedGraphQLError.java
in graphql-error-types/src/main/java/com/netflix/graphql/types/errors
234 34 53 23 9
191 13 50 26 17
DgsSpringGraphQLAutoConfiguration.kt
in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig
743 34 47 6 5
DgsGraphQLMetricsInstrumentation.kt
in graphql-dgs-spring-boot-micrometer/src/main/kotlin/com/netflix/graphql/dgs/metrics/micrometer
409 11 30 7 8
DefaultInputObjectMapper.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
192 4 21 11 9
ScaryMovie.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/types
57 13 19 33 7
ActionMovie.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/types
48 11 16 33 6
GraphQLJavaErrorInstrumentation.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
78 1 16 21 16
MultipartVariableMapper.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/utils
79 7 15 19 9
HelloDataFetcher.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/datafetcher
98 12 13 13 2
DgsReactiveQueryExecutor.java
in graphql-dgs-reactive/src/main/java/com/netflix/graphql/dgs/reactive
77 10 10 13 1
SpringGraphQLDgsQueryExecutor.kt
in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql
138 8 10 7 2
FileUploadMutation.java
in graphql-dgs-spring-graphql-example-java/src/main/java/com/netflix/graphql/dgs/example/datafetcher
51 6 10 20 3
MonoGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
81 10 10 12 1
DgsQueryExecutor.java
in graphql-dgs/src/main/java/com/netflix/graphql/dgs
90 10 10 11 1
DgsWrapWithContextDataLoaderCustomizer.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
56 8 10 18 2
DgsGraphQLSourceBuilder.kt
in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql
119 9 9 8 1
DgsDataLoaderInstrumentationDataLoaderCustomizer.java
in graphql-dgs/src/main/java/com/netflix/graphql/dgs/internal
121 7 9 7 2
DataFetcherInvoker.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
139 1 9 6 9
SpringGraphQLDgsReactiveQueryExecutor.kt
in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql
118 5 7 6 2
RatingMutation.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/datafetcher
36 5 7 19 3
DgsGraphQLResponse.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
56 4 7 13 2
common.py
in scripts
33 6 7 21 2
BaseDgsQueryExecutor.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
171 1 7 4 7
AbstractInputArgumentResolver.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/method
78 1 7 9 7
DgsSpringGraphQLEnvironmentPostProcessor.kt
in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig
59 1 6 10 6
DgsWebClientGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
87 6 6 7 1
GraphQLResponse.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
123 3 6 5 2
WebClientGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
100 6 6 6 1
DgsContext.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/context
88 6 6 7 1
DefaultDgsDataLoaderReloadController.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
89 2 6 7 3
BatchLoaderWithContextInterceptor.kt
in graphql-dgs-spring-boot-micrometer/src/main/kotlin/com/netflix/graphql/dgs/metrics/micrometer/dataloader
64 1 6 9 6
DgsWebMvcGraphQLInterceptor.kt
in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/webmvc
58 1 5 9 5
GraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
60 5 5 8 1
FileUploadMutation.java
in graphql-dgs-spring-graphql-example-java-webflux/src/main/java/com/netflix/graphql/dgs/example/reactive/datafetchers
39 5 5 13 1
DgsDataFetchingEnvironment.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs
77 2 5 6 4
SimpleGqlOutcomeTagCustomizer.kt
in graphql-dgs-spring-boot-micrometer/src/main/kotlin/com/netflix/graphql/dgs/metrics/micrometer/tagging
32 2 5 16 3
ExampleGraphQLContextContributor.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/context
25 1 4 16 4
ExampleInstrumentationDependingOnContextContributor.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/instrumentation
41 2 4 10 2
ConcurrentDataFetcher.java
in graphql-dgs-example-shared/src/main/java/com/netflix/graphql/dgs/example/shared/datafetcher
40 2 4 10 2
Person.java
in graphql-dgs-spring-graphql-example-java/src/main/java/com/netflix/graphql/dgs/example/datafetcher
14 4 4 29 1
DgsCustomGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
38 3 4 11 2
CustomGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
45 3 4 9 2
DgsRestClientGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
60 3 4 7 2
DgsCustomMonoGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
40 3 4 10 2
CustomMonoGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
47 3 4 9 2
Jackson2DgsJsonMapperAdapter.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
99 4 4 4 1
RestClientGraphQLClient.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
71 3 4 6 2
Jackson3DgsJsonMapperAdapter.kt
in graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client
96 4 4 4 1
ReloadableDgsDataLoaderProvider.kt
in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal
85 3 4 5 2
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...