File Complexity Overall
  • There are 442 files with units, with 51,201 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 1 complex files (McCabe index sum 126-250; 2,189 lines of code)
    • 11 medium complex files (McCabe index sum 51-125; 6,178 lines of code)
    • 29 slightly complex files (McCabe index sum 26-50; 14,668 lines of code)
    • 401 simple files (McCabe index sum 1-25; 28,166 lines of code)
  • 432 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 4% | 12% | 28% | 55%
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% | 4% | 12% | 29% | 53%
js0% | 0% | 0% | 0% | 100%
py0% | 0% | 0% | 0% | 100%
groovy0% | 0% | 0% | 0% | 100%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
genie-web0% | 7% | 12% | 37% | 43%
genie-client0% | 0% | 41% | 0% | 58%
genie-common-internal0% | 0% | 13% | 17% | 68%
genie-agent0% | 0% | 4% | 23% | 71%
genie-common0% | 0% | 0% | 20% | 79%
genie-ui0% | 0% | 0% | 0% | 100%
genie-agent-app0% | 0% | 0% | 0% | 100%
genie-demo0% | 0% | 0% | 0% | 100%
genie-app0% | 0% | 0% | 0% | 100%
genie-swagger0% | 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
JpaPersistenceServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/data/services/impl/jpa
2189 122 218 10 9
JobEntity.java
in genie-web/src/main/java/com/netflix/genie/web/data/services/impl/jpa/entities
872 71 84 10 3
CommandClient.java
in genie-client/src/main/java/com/netflix/genie/client
308 30 75 24 4
ClusterClient.java
in genie-client/src/main/java/com/netflix/genie/client
309 29 73 24 4
GRpcAgentFileStreamServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/apis/rpc/v4/endpoints
579 36 73 13 7
JobClient.java
in genie-client/src/main/java/com/netflix/genie/client
450 29 70 16 15
JobResolverServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/services/impl
821 28 65 8 9
DtoConverters.java
in genie-common-internal/src/main/java/com/netflix/genie/common/internal/dtos/converters
719 27 63 9 11
ApplicationClient.java
in genie-client/src/main/java/com/netflix/genie/client
250 25 60 24 4
JobRestController.java
in genie-web/src/main/java/com/netflix/genie/web/apis/rest/v3/controllers
630 19 57 9 11
GRpcAgentJobServiceImpl.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/services/impl/grpc
317 16 53 17 8
JpaPersistenceServiceImplCommandsIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/data/services/impl/jpa
923 46 51 6 4
AgentRoutingServiceCuratorDiscoveryImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/services/impl
368 20 50 14 5
JobProcessManagerImpl.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/process/impl
247 8 50 20 17
JobRestControllerIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers
1603 39 48 3 4
GRpcAgentFileStreamServiceImpl.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/services/impl/grpc
383 18 47 12 7
DirectoryManifest.java
in genie-common-internal/src/main/java/com/netflix/genie/common/internal/dtos
357 25 46 13 8
JpaPersistenceServiceImplJobsIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/data/services/impl/jpa
1319 39 44 3 4
JpaPersistenceServiceImplApplicationsIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/data/services/impl/jpa
484 38 38 8 1
FinishedJob.java
in genie-common-internal/src/main/java/com/netflix/genie/common/internal/dtos
241 35 37 15 2
CommandRestControllerIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers
1717 35 37 2 2
DatabaseCleanupTask.java
in genie-web/src/main/java/com/netflix/genie/web/tasks/leader
536 14 37 7 4
JpaPersistenceServiceImplClustersIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/data/services/impl/jpa
638 33 36 6 4
RestControllerIntegrationTestBase.java
in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers
600 19 35 6 5
CommandEntity.java
in genie-web/src/main/java/com/netflix/genie/web/data/services/impl/jpa/entities
361 22 35 10 6
ExecutionAutoConfiguration.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution
336 35 35 10 1
JobResolutionProperties.java
in genie-web/src/main/java/com/netflix/genie/web/properties
180 26 34 19 2
JobExecutionStateMachineImpl.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/statemachine
170 15 33 19 14
FetchingCacheServiceImpl.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/services/impl
260 19 33 13 5
JobRequest.java
in genie-common/src/main/java/com/netflix/genie/common/dto
254 23 32 13 3
CommandRestController.java
in genie-web/src/main/java/com/netflix/genie/web/apis/rest/v3/controllers
536 30 31 6 2
GRpcHeartBeatServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/apis/rpc/v4/endpoints
200 13 31 16 6
JobServiceProtoConverter.java
in genie-common-internal/src/main/java/com/netflix/genie/common/internal/dtos/converters
366 20 29 8 4
ClusterRestControllerIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers
947 26 29 3 2
Job.java
in genie-common/src/main/java/com/netflix/genie/common/dto
170 24 28 16 3
JobDirectoryServerServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/services/impl
304 6 28 9 14
StreamBuffer.java
in genie-web/src/main/java/com/netflix/genie/web/util
143 10 27 19 7
TitusAgentLauncherImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/launchers/impl
486 10 27 6 7
ApplicationRestControllerIntegrationTest.java
in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers
878 22 26 3 3
LocalAgentLauncherImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/launchers/impl
301 6 26 9 11
InfoCommand.java
in genie-agent/src/main/java/com/netflix/genie/agent/cli
283 3 26 9 15
GenieClientUtils.java
in genie-client/src/main/java/com/netflix/genie/client
110 6 25 23 10
ClusterRestController.java
in genie-web/src/main/java/com/netflix/genie/web/apis/rest/v3/controllers
416 24 25 6 2
JobSetupServiceImpl.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/services/impl
544 7 25 5 5
Criterion.java
in genie-common-internal/src/main/java/com/netflix/genie/common/internal/dtos
101 13 24 24 7
Criterion.java
in genie-common/src/main/java/com/netflix/genie/common/dto
101 13 24 24 7
ConsoleLogListener.java
in genie-agent/src/main/java/com/netflix/genie/agent/execution/statemachine/listeners
93 11 24 26 13
GRpcJobKillServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/apis/rpc/v4/endpoints
183 6 23 13 11
AgentConnectionTrackingServiceImpl.java
in genie-web/src/main/java/com/netflix/genie/web/agent/services/impl
152 12 23 15 4
SimpleStorageRangeResource.java
in genie-common-internal/src/main/java/com/netflix/genie/common/internal/aws/s3
146 7 22 15 11
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...