File Complexity Overall
  • There are 204 files with units, with 28,888 lines of code.
    • 2 very complex files (McCabe index sum 251+; 4,015 lines of code)
    • 1 complex files (McCabe index sum 126-250; 1,606 lines of code)
    • 20 medium complex files (McCabe index sum 51-125; 8,598 lines of code)
    • 25 slightly complex files (McCabe index sum 26-50; 5,228 lines of code)
    • 156 simple files (McCabe index sum 1-25; 9,441 lines of code)
  • 59 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system13% | 5% | 29% | 18% | 32%
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
java13% | 5% | 29% | 18% | 32%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
server15% | 6% | 31% | 17% | 29%
client0% | 0% | 37% | 23% | 38%
core0% | 0% | 0% | 27% | 72%
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
JobClusterActor.java
in server/src/main/java/io/mantisrx/master/jobcluster
2270 138 457 20 20
JobClusterManagerProto.java
in server/src/main/java/io/mantisrx/master/jobcluster/proto
1745 219 276 16 13
JobActor.java
in server/src/main/java/io/mantisrx/master/jobcluster/job
1606 74 222 14 17
JobClustersManagerActor.java
in server/src/main/java/io/mantisrx/master
807 60 114 14 11
DataFormatAdapter.java
in server/src/main/java/io/mantisrx/server/master/domain
655 49 107 16 9
SimpleCachedFileStorageProvider.java
in server/src/main/java/io/mantisrx/server/master/persistence
498 45 101 20 6
SimpleCachedFileStorageProvider.java
in server/src/main/java/io/mantisrx/server/master/store
448 41 94 21 10
MantisJobStore.java
in server/src/main/java/io/mantisrx/server/master/persistence
291 33 87 30 9
SchedulingService.java
in server/src/main/java/io/mantisrx/server/master
599 25 86 14 14
MantisStorageProviderAdapter.java
in server/src/main/java/io/mantisrx/server/master/persistence
315 25 84 27 5
MantisStageMetadataImpl.java
in server/src/main/java/io/mantisrx/master/jobcluster/job
389 40 83 21 12
MantisWorkerMetadataImpl.java
in server/src/main/java/io/mantisrx/master/jobcluster/job/worker
299 42 77 26 22
MantisJobMetadataImpl.java
in server/src/main/java/io/mantisrx/master/jobcluster/job
332 48 76 23 10
JobWorker.java
in server/src/main/java/io/mantisrx/master/jobcluster/job/worker
488 25 70 14 10
NamedJob.java
in server/src/main/java/io/mantisrx/server/master/store
352 51 69 20 5
MantisWorkerMetadataWritable.java
in server/src/main/java/io/mantisrx/server/master/store
274 45 66 24 9
JobClusterDefinitionImpl.java
in server/src/main/java/io/mantisrx/server/master/domain
320 41 64 20 12
JobDefinition.java
in server/src/main/java/io/mantisrx/server/master/domain
247 30 59 24 13
AgentClusterOperationsImpl.java
in server/src/main/java/io/mantisrx/master/vm
276 15 58 21 15
MantisMasterClientApi.java
in client/src/main/java/io/mantisrx/server/master/client
552 29 57 10 9
MesosSchedulerCallbackHandler.java
in server/src/main/java/io/mantisrx/server/master/mesos
301 17 53 18 9
JobsRoute.java
in server/src/main/java/io/mantisrx/master/api/akka/route/v1
594 16 51 9 15
JobClusterRoute.java
in server/src/main/java/io/mantisrx/master/api/akka/route/v0
561 7 51 9 29
JobDefinitionResolver.java
in server/src/main/java/io/mantisrx/master/jobcluster
139 5 49 35 36
MantisJobMetadataView.java
in server/src/main/java/io/mantisrx/master/jobcluster/job
156 12 44 28 19
VirtualMachineMasterServiceMesosImpl.java
in server/src/main/java/io/mantisrx/server/master/mesos
429 21 43 10 7
MantisJobClusterMetadataView.java
in server/src/main/java/io/mantisrx/master/jobcluster
197 29 43 22 15
MantisStageMetadataWritable.java
in server/src/main/java/io/mantisrx/server/master/store
191 22 41 21 8
JobClusterProtoAdapter.java
in server/src/main/java/io/mantisrx/master/api/akka/route/proto
268 24 39 15 8
MasterClientWrapper.java
in client/src/main/java/io/mantisrx/server/master/client
352 23 39 11 5
SLA.java
in server/src/main/java/io/mantisrx/server/master/domain
152 11 37 24 11
MantisJobMetadataWritable.java
in server/src/main/java/io/mantisrx/server/master/store
230 25 37 16 4
LifecycleEventsProto.java
in server/src/main/java/io/mantisrx/master/events
269 29 37 14 9
WorkerRequest.java
in server/src/main/java/io/mantisrx/server/master
170 30 34 20 5
WorkerRequest.java
in server/src/main/java/io/mantisrx/server/master/domain
170 30 34 20 5
BaseRoute.java
in server/src/main/java/io/mantisrx/master/api/akka/route/v1
270 10 34 13 8
ScheduleRequest.java
in server/src/main/java/io/mantisrx/server/master/scheduler
156 28 33 21 5
ScheduleRequest.java
in server/src/main/java/io/mantisrx/master/scheduler
156 28 33 21 5
AgentsErrorMonitorActor.java
in server/src/main/java/io/mantisrx/master/scheduler
186 19 32 17 6
MasterDescription.java
in core/src/main/java/io/mantisrx/server/core/master
121 13 30 25 14
ListObject.java
in server/src/main/java/io/mantisrx/master/api/akka/route/pagination
219 11 30 14 11
MasterMain.java
in server/src/main/java/io/mantisrx/server/master
291 15 29 10 4
JobAssignmentResult.java
in core/src/main/java/io/mantisrx/server/core
96 12 28 29 9
JobClustersRoute.java
in server/src/main/java/io/mantisrx/master/api/akka/route/v1
475 15 28 6 5
Status.java
in core/src/main/java/io/mantisrx/server/core
136 24 27 20 3
AgentClusterOperations.java
in server/src/main/java/io/mantisrx/master/vm
170 27 27 16 1
WorkerTopologyInfo.java
in core/src/main/java/io/mantisrx/server/core
128 15 26 20 8
JobClusterConfig.java
in server/src/main/java/io/mantisrx/server/master/domain
101 15 26 26 7
NoopStorageProvider.java
in server/src/main/java/io/mantisrx/server/master/store
91 25 25 27 1
WorkerHost.java
in core/src/main/java/io/mantisrx/server/core
91 11 24 26 12
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...