File Complexity Overall
  • There are 220 files with units, with 23,656 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 5 complex files (McCabe index sum 126-250; 3,999 lines of code)
    • 16 medium complex files (McCabe index sum 51-125; 5,446 lines of code)
    • 23 slightly complex files (McCabe index sum 26-50; 4,391 lines of code)
    • 176 simple files (McCabe index sum 1-25; 9,820 lines of code)
  • 76 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 16% | 23% | 18% | 41%
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% | 16% | 23% | 18% | 41%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
eureka-client0% | 23% | 17% | 13% | 45%
eureka-core0% | 11% | 35% | 21% | 31%
eureka-client-jersey20% | 0% | 31% | 51% | 17%
eureka-client-archaius20% | 0% | 0% | 38% | 61%
eureka-examples0% | 0% | 0% | 0% | 100%
eureka-core-jersey20% | 0% | 0% | 0% | 100%
eureka-server-governator0% | 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
DiscoveryClient.java
in eureka-client/src/main/java/com/netflix/discovery
1246 74 231 19 15
AbstractInstanceRegistry.java
in eureka-core/src/main/java/com/netflix/eureka/registry
924 53 184 20 15
InstanceInfo.java
in eureka-client/src/main/java/com/netflix/appinfo
767 103 168 22 9
EurekaEntityComparators.java
in eureka-client/src/main/java/com/netflix/discovery/util
327 16 155 47 46
EurekaJacksonCodec.java
in eureka-client/src/main/java/com/netflix/discovery/converters
735 36 139 19 47
PeerAwareInstanceRegistryImpl.java
in eureka-core/src/main/java/com/netflix/eureka/registry
454 33 99 22 9
DefaultEurekaServerConfig.java
in eureka-core/src/main/java/com/netflix/eureka
512 79 92 18 7
Converters.java
in eureka-client/src/main/java/com/netflix/discovery/converters
492 22 85 17 17
DeserializerStringCache.java
in eureka-client/src/main/java/com/netflix/discovery/util
362 41 78 22 6
CodecWrappers.java
in eureka-client/src/main/java/com/netflix/discovery/converters/wrappers
287 52 70 24 8
EurekaEntityFunctions.java
in eureka-client/src/main/java/com/netflix/discovery/util
247 28 69 28 6
RemoteRegionRegistry.java
in eureka-core/src/main/java/com/netflix/eureka/registry
408 19 68 17 11
AwsAsgUtil.java
in eureka-core/src/main/java/com/netflix/eureka/aws
360 22 65 18 7
ResponseCacheImpl.java
in eureka-core/src/main/java/com/netflix/eureka/registry
388 21 62 16 9
AbstractJersey2EurekaHttpClient.java
in eureka-client-jersey2/src/main/java/com/netflix/discovery/shared/transport/jersey2
288 18 60 21 8
Route53Binder.java
in eureka-core/src/main/java/com/netflix/eureka/aws
270 22 60 22 8
Applications.java
in eureka-client/src/main/java/com/netflix/discovery/shared
283 32 59 21 7
AbstractJerseyEurekaHttpClient.java
in eureka-client/src/main/java/com/netflix/discovery/shared/transport/jersey
271 17 57 21 9
EIPManager.java
in eureka-core/src/main/java/com/netflix/eureka/aws
280 13 55 20 12
AcceptorExecutor.java
in eureka-core/src/main/java/com/netflix/eureka/util/batcher
263 18 53 20 9
DefaultEurekaClientConfig.java
in eureka-client/src/main/java/com/netflix/discovery
281 47 51 18 4
EndpointUtils.java
in eureka-client/src/main/java/com/netflix/discovery/endpoint
283 9 50 18 18
AmazonInfo.java
in eureka-client/src/main/java/com/netflix/appinfo
252 26 50 20 16
EurekaArchaius2ClientConfig.java
in eureka-client-archaius2/src/main/java/com/netflix/discovery
188 47 50 27 4
JerseyEurekaHttpClientFactory.java
in eureka-client/src/main/java/com/netflix/discovery/shared/transport/jersey
235 18 44 19 6
ReplicationInstance.java
in eureka-core/src/main/java/com/netflix/eureka/cluster/protocol
142 22 44 31 16
ElasticNetworkInterfaceBinder.java
in eureka-core/src/main/java/com/netflix/eureka/aws
235 12 39 17 7
ReplicationTaskProcessor.java
in eureka-core/src/main/java/com/netflix/eureka/cluster
175 10 38 22 7
DiscoveryJerseyProvider.java
in eureka-client/src/main/java/com/netflix/discovery/provider
149 13 37 25 5
ApplicationInfoManager.java
in eureka-client/src/main/java/com/netflix/appinfo
161 18 37 23 8
EurekaJersey2ClientImpl.java
in eureka-client-jersey2/src/main/java/com/netflix/discovery/shared/transport/jersey2
287 24 36 13 4
PeerEurekaNode.java
in eureka-core/src/main/java/com/netflix/eureka/cluster
239 16 35 15 7
TaskExecutors.java
in eureka-core/src/main/java/com/netflix/eureka/util/batcher
227 10 35 15 11
Jersey2ApplicationClientFactory.java
in eureka-client-jersey2/src/main/java/com/netflix/discovery/shared/transport/jersey2
189 12 34 18 9
EurekaJerseyClientImpl.java
in eureka-client/src/main/java/com/netflix/discovery/shared/transport/jersey
240 24 34 14 6
DefaultEndpoint.java
in eureka-client/src/main/java/com/netflix/discovery/shared/resolver
110 13 34 31 11
InstanceResource.java
in eureka-core/src/main/java/com/netflix/eureka/resources
206 7 34 17 8
Application.java
in eureka-client/src/main/java/com/netflix/discovery/shared
165 17 33 20 13
PropertiesInstanceConfig.java
in eureka-client/src/main/java/com/netflix/appinfo
167 27 33 20 3
PeerEurekaNodes.java
in eureka-core/src/main/java/com/netflix/eureka/cluster
191 13 33 17 9
EurekaArchaius2InstanceConfig.java
in eureka-client-archaius2/src/main/java/com/netflix/appinfo
154 26 32 21 4
RateLimitingFilter.java
in eureka-core/src/main/java/com/netflix/eureka
140 11 32 23 10
DefaultServerCodecs.java
in eureka-core/src/main/java/com/netflix/eureka/resources
129 18 30 23 5
PeerReplicationResource.java
in eureka-core/src/main/java/com/netflix/eureka/resources
127 11 26 20 7
DnsResolver.java
in eureka-client/src/main/java/com/netflix/discovery/endpoint
114 6 24 21 6
JerseyReplicationClient.java
in eureka-core/src/main/java/com/netflix/eureka/transport
163 9 24 15 7
Jersey2ReplicationClient.java
in eureka-core-jersey2/src/main/java/com/netflix/eureka/transport
157 8 23 15 7
ApplicationResource.java
in eureka-core/src/main/java/com/netflix/eureka/resources
126 6 23 18 13
MetricsCollectingEurekaHttpClient.java
in eureka-client/src/main/java/com/netflix/discovery/shared/transport/decorator
178 11 22 12 6
EurekaClientFactoryBuilder.java
in eureka-client/src/main/java/com/netflix/discovery/shared/transport
137 22 22 16 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...