File Complexity Overall
  • There are 93 files with units, with 6,694 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 1 complex files (McCabe index sum 126-250; 461 lines of code)
    • 3 medium complex files (McCabe index sum 51-125; 1,059 lines of code)
    • 9 slightly complex files (McCabe index sum 26-50; 1,637 lines of code)
    • 80 simple files (McCabe index sum 1-25; 3,537 lines of code)
  • 31 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 6% | 15% | 24% | 52%
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% | 6% | 15% | 24% | 52%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
archaius2-core0% | 9% | 22% | 22% | 44%
archaius2-guice0% | 0% | 0% | 55% | 44%
archaius2-archaius1-bridge0% | 0% | 0% | 34% | 65%
archaius2-persisted20% | 0% | 0% | 33% | 66%
archaius2-api0% | 0% | 0% | 0% | 100%
archaius2-typesafe0% | 0% | 0% | 0% | 100%
archaius2-commons-configuration0% | 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
AbstractConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
461 61 127 28 35
ConfigProxyFactory.java
in archaius2-core/src/main/java/com/netflix/archaius
416 30 92 22 10
DefaultPropertyFactory.java
in archaius2-core/src/main/java/com/netflix/archaius
349 48 72 21 7
DefaultPropertyContainer.java
in archaius2-core/src/main/java/com/netflix/archaius/property
294 23 54 18 11
DefaultCompositeConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
226 30 43 19 4
DefaultLayeredConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
204 24 41 20 10
StaticAbstractConfiguration.java
in archaius2-archaius1-bridge/src/main/java/com/netflix/archaius/bridge
199 27 35 18 2
ConfigMapper.java
in archaius2-core/src/main/java/com/netflix/archaius
130 3 33 25 31
JsonPersistedV2Reader.java
in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2
178 15 32 18 17
AccessMonitorUtil.java
in archaius2-core/src/main/java/com/netflix/archaius/instrumentation
164 19 30 18 6
PollingDynamicConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
152 18 29 19 5
InternalArchaiusModule.java
in archaius2-guice/src/main/java/com/netflix/archaius/guice
208 20 28 13 7
DefaultConfigLoader.java
in archaius2-core/src/main/java/com/netflix/archaius
176 12 27 15 12
ArchaiusType.java
in archaius2-api/src/main/java/com/netflix/archaius/api
95 10 24 25 6
AbstractConfigurationBridge.java
in archaius2-archaius1-bridge/src/main/java/com/netflix/archaius/bridge
167 22 24 14 3
PropertiesConfigReader.java
in archaius2-core/src/main/java/com/netflix/archaius/readers
116 6 22 19 8
CommonsToConfig.java
in archaius2-commons-configuration/src/main/java/com/netflix/archaius/commons
84 10 20 24 5
PrefixedViewConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
102 16 20 20 3
DefaultTypeConverterFactory.java
in archaius2-core/src/main/java/com/netflix/archaius/converters
127 9 20 16 7
MapConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
83 17 19 23 2
StaticDeploymentContext.java
in archaius2-archaius1-bridge/src/main/java/com/netflix/archaius/bridge
77 17 18 23 2
ArchaiusModule.java
in archaius2-guice/src/main/java/com/netflix/archaius/guice
78 13 16 21 4
DefaultSettableConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
88 12 16 18 3
AbstractDependentConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
74 13 16 22 2
AbstractRegistryDecoder.java
in archaius2-core/src/main/java/com/netflix/archaius
101 5 16 16 6
Layer.java
in archaius2-api/src/main/java/com/netflix/archaius/api
51 8 16 31 8
DefaultPersisted2ClientConfig.java
in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2
92 15 15 16 1
ConfigBasedDeploymentContext.java
in archaius2-archaius1-bridge/src/main/java/com/netflix/archaius/bridge
73 15 15 21 1
Persisted2ConfigProvider.java
in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2
99 4 14 14 8
PrivateViewConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
68 10 13 19 3
ArrayTypeConverterFactory.java
in archaius2-core/src/main/java/com/netflix/archaius/converters
60 2 13 22 12
JDCConfigReader.java
in archaius2-core/src/main/java/com/netflix/archaius/readers
76 5 13 17 7
ConfigurationInjectingListener.java
in archaius2-guice/src/main/java/com/netflix/archaius/guice
89 3 12 13 9
TypesafeConfig.java
in archaius2-typesafe/src/main/java/com/netflix/archaius/typesafe
66 8 10 15 2
ReadOnlyMap.java
in archaius2-core/src/main/java/com/netflix/archaius
50 10 10 20 1
PropertyDetails.java
in archaius2-api/src/main/java/com/netflix/archaius/api
37 7 10 27 4
ManualPollingStrategy.java
in archaius2-core/src/main/java/com/netflix/archaius/config/polling
59 4 9 15 4
EmptyConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
37 8 8 22 1
PropertyOverrideVisitor.java
in archaius2-core/src/main/java/com/netflix/archaius/visitor
47 4 8 17 3
URLConfigReader.java
in archaius2-core/src/main/java/com/netflix/archaius/readers
88 5 8 9 4
ScopePriorityPropertyValueResolver.java
in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2
28 1 7 25 7
EnvironmentConfig.java
in archaius2-core/src/main/java/com/netflix/archaius/config
35 7 7 20 1
FixedPollingStrategy.java
in archaius2-core/src/main/java/com/netflix/archaius/config/polling
54 3 7 13 5
MethodInvoker.java
in archaius2-core/src/main/java/com/netflix/archaius/property
30 3 7 23 4
ConcatCascadeStrategy.java
in archaius2-core/src/main/java/com/netflix/archaius/cascade
44 6 7 16 2
Property.java
in archaius2-api/src/main/java/com/netflix/archaius/api
36 7 7 19 1
ScopePredicates.java
in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2
43 3 6 14 3
HTTPStreamLoader.java
in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2/loader
40 2 6 15 5
DependentConfigListener.java
in archaius2-core/src/main/java/com/netflix/archaius/config
41 5 6 15 2
Config.java
in archaius2-api/src/main/java/com/netflix/archaius/api
77 6 6 8 1
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...