File Complexity Overall
  • There are 140 files with units, with 12,840 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 2 complex files (McCabe index sum 126-250; 1,041 lines of code)
    • 3 medium complex files (McCabe index sum 51-125; 1,056 lines of code)
    • 18 slightly complex files (McCabe index sum 26-50; 3,563 lines of code)
    • 117 simple files (McCabe index sum 1-25; 7,180 lines of code)
  • 36 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 8% | 8% | 27% | 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% | 8% | 8% | 27% | 55%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
priam0% | 8% | 8% | 28% | 55%
priam-cass-extensions0% | 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
IConfiguration.java
in priam/src/main/java/com/netflix/priam/config
455 144 144 32 1
PriamConfiguration.java
in priam/src/main/java/com/netflix/priam/config
586 135 140 24 6
JMXNodeTool.java
in priam/src/main/java/com/netflix/priam/connection
335 24 62 19 12
S3FileSystem.java
in priam/src/main/java/com/netflix/priam/aws
413 14 55 13 12
AWSMembership.java
in priam/src/main/java/com/netflix/priam/aws
308 14 54 18 13
SnapshotMetaTask.java
in priam/src/main/java/com/netflix/priam/backupv2
331 21 50 15 8
TokenRetriever.java
in priam/src/main/java/com/netflix/priam/identity/token
325 17 46 14 7
InstanceState.java
in priam/src/main/java/com/netflix/priam/health
158 36 44 28 7
AbstractBackupPath.java
in priam/src/main/java/com/netflix/priam/backup
230 34 44 19 5
CassandraAdmin.java
in priam/src/main/java/com/netflix/priam/resources
298 19 43 14 5
DateUtil.java
in priam/src/main/java/com/netflix/priam/utils
120 19 39 33 5
AWSInstanceInfo.java
in priam/src/main/java/com/netflix/priam/identity/config
172 14 38 22 6
PgpCryptography.java
in priam/src/main/java/com/netflix/priam/cryptography/pgp
264 15 35 13 8
MetaV2Proxy.java
in priam/src/main/java/com/netflix/priam/backupv2
202 13 31 15 6
AbstractConfigSource.java
in priam/src/main/java/com/netflix/priam/configSource
130 15 30 23 3
BackupTTLTask.java
in priam/src/main/java/com/netflix/priam/backupv2
209 8 30 14 15
StandardTuner.java
in priam/src/main/java/com/netflix/priam/tuner
199 10 29 15 6
JVMOptionsTuner.java
in priam/src/main/java/com/netflix/priam/tuner
148 6 28 19 11
CassandraProcessManager.java
in priam/src/main/java/com/netflix/priam/defaultimpl
168 7 28 17 12
TokenRetrieverUtils.java
in priam/src/main/java/com/netflix/priam/identity/token
152 14 27 18 8
InstanceIdentity.java
in priam/src/main/java/com/netflix/priam/identity
125 12 27 22 12
AbstractFileSystem.java
in priam/src/main/java/com/netflix/priam/backup
237 14 27 11 8
JVMOption.java
in priam/src/main/java/com/netflix/priam/tuner
95 14 26 27 7
BackupMetadata.java
in priam/src/main/java/com/netflix/priam/backup
89 17 25 28 6
PriamInstance.java
in priam/src/main/java/com/netflix/priam/identity
97 24 24 25 1
AbstractBackup.java
in priam/src/main/java/com/netflix/priam/backup
93 6 24 26 10
GsonJsonSerializer.java
in priam/src/main/java/com/netflix/priam/utils
118 12 22 19 3
BackupStatusMgr.java
in priam/src/main/java/com/netflix/priam/backup
139 11 22 16 3
AbstractRestore.java
in priam/src/main/java/com/netflix/priam/restore
214 8 21 10 9
BackupMetrics.java
in priam/src/main/java/com/netflix/priam/merics
95 20 20 21 1
CassandraConfig.java
in priam/src/main/java/com/netflix/priam/resources
132 8 19 14 3
S3FileSystemBase.java
in priam/src/main/java/com/netflix/priam/aws
152 10 19 13 3
BackupRestoreUtil.java
in priam/src/main/java/com/netflix/priam/backup
106 5 18 17 12
AuditLogTunerLog4J.java
in priam/src/main/java/com/netflix/priam/tuner/dse
92 3 17 18 13
PriamScheduler.java
in priam/src/main/java/com/netflix/priam/scheduler
107 8 17 16 3
RemoteBackupPath.java
in priam/src/main/java/com/netflix/priam/aws
129 10 17 13 3
IncrementalBackup.java
in priam/src/main/java/com/netflix/priam/backup
104 8 17 16 5
BackupVerification.java
in priam/src/main/java/com/netflix/priam/backup
94 6 17 18 5
PostRestoreHook.java
in priam/src/main/java/com/netflix/priam/restore
130 5 17 13 7
BackupNotificationMgr.java
in priam/src/main/java/com/netflix/priam/notification
142 6 16 11 5
CassandraMonitor.java
in priam/src/main/java/com/netflix/priam/health
119 4 16 13 13
SystemUtils.java
in priam/src/main/java/com/netflix/priam/utils
92 6 16 17 4
PriamStartupAgent.java
in priam-cass-extensions/src/main/java/com/netflix/priam/cassandra/extensions
81 3 16 20 8
CompositeConfigSource.java
in priam/src/main/java/com/netflix/priam/configSource
65 10 14 22 3
StaticMembership.java
in priam/src/main/java/com/netflix/priam/cli
68 9 14 21 5
Flush.java
in priam/src/main/java/com/netflix/priam/cluster/management
67 4 13 19 7
BackupServletV2.java
in priam/src/main/java/com/netflix/priam/resources
173 9 13 8 3
PropertiesConfigSource.java
in priam/src/main/java/com/netflix/priam/configSource
75 8 13 17 4
CronTimer.java
in priam/src/main/java/com/netflix/priam/scheduler
74 9 13 18 5
BoundedExponentialRetryCallable.java
in priam/src/main/java/com/netflix/priam/utils
59 3 13 22 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...