File Complexity Overall
  • There are 96 files with units, with 16,701 lines of code.
    • 2 very complex files (McCabe index sum 251+; 6,348 lines of code)
    • 1 complex files (McCabe index sum 126-250; 907 lines of code)
    • 6 medium complex files (McCabe index sum 51-125; 2,614 lines of code)
    • 9 slightly complex files (McCabe index sum 26-50; 1,641 lines of code)
    • 78 simple files (McCabe index sum 1-25; 5,191 lines of code)
  • 41 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system38% | 5% | 15% | 9% | 31%
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
java38% | 5% | 15% | 9% | 31%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
dyno-jedis74% | 10% | 7% | 1% | 5%
dyno-core0% | 0% | 34% | 14% | 50%
dyno-contrib0% | 0% | 0% | 38% | 61%
dyno-recipes0% | 0% | 0% | 25% | 74%
dyno-redisson0% | 0% | 0% | 0% | 100%
dyno-client0% | 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
DynoJedisClient.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
3873 599 710 18 10
DynoJedisPipeline.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
2475 232 282 11 6
DynoDualWriterPipeline.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
907 139 145 16 4
ConnectionPoolImpl.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
524 29 81 15 11
ConnectionPoolConfigurationImpl.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
435 74 74 17 1
HostSelectionWithFallback.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
360 23 74 21 12
DynoDualWriterClient.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
624 64 72 12 4
HostConnectionPoolImpl.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
355 39 69 19 8
CountingConnectionPoolMonitor.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
316 53 66 21 9
RateTracker.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/health
195 27 46 24 6
DynoLockClient.java
in dyno-recipes/src/main/java/com/netflix/dyno/recipes/lock
277 28 44 16 5
EstimatedHistogram.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/utils
168 16 42 25 6
ArchaiusConnectionPoolConfiguration.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib
238 27 37 16 6
ConnectionPoolHealthTracker.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/health
155 9 33 21 10
Host.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool
136 21 33 24 6
ElasticConnectionPoolConfigurationPublisher.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib
133 7 30 23 7
SimpleAsyncConnectionPoolImpl.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
176 16 29 16 4
JedisConnectionFactory.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
163 17 28 17 6
AbstractTokenMapSupplier.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
137 9 25 18 7
CollectionUtils.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/utils
102 11 25 25 5
DynoJedisJsonClient.java
in dyno-recipes/src/main/java/com/netflix/dyno/recipes/json
196 17 25 13 8
DynoCPMonitor.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib
128 23 24 19 2
DynoBinarySearch.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/hash
111 8 24 22 7
DynoJedisPipelineMonitor.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
146 19 24 16 3
HttpEndpointBasedTokenMapSupplier.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
141 8 23 16 6
TokenPoolTopology.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool
100 14 23 23 3
TokenAwareSelection.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
133 13 22 17 8
HostStatusTracker.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
100 12 22 22 5
DynoJedisPipelineCounter.java
in dyno-recipes/src/main/java/com/netflix/dyno/recipes/counter
124 8 22 18 9
Murmur2Hash.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/hash
94 9 21 22 9
DynoRedissonClient.java
in dyno-redisson/src/main/java/com/netflix/dyno/redisson
151 18 20 13 3
BinarySearchTokenMapper.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/hash
84 13 20 24 4
OperationResultImpl.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
99 15 20 20 3
RoundRobinSelection.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
106 12 19 18 4
DynoJedisUtils.java
in dyno-jedis/src/main/java/com/netflix/dyno/jedis
123 5 19 15 5
DynoOPMonitor.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib
117 14 18 15 3
EstimatedHistogramBasedCounter.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib
83 15 18 22 4
CircularList.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
70 11 18 26 3
DynoJedisCounter.java
in dyno-recipes/src/main/java/com/netflix/dyno/recipes/counter
88 10 18 20 7
RedissonDemo.java
in dyno-redisson/src/main/java/com/netflix/dyno/redisson
116 4 17 15 9
ErrorRateMonitor.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/health
90 8 17 19 7
RetryNTimes.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
92 14 17 18 2
HostsUpdater.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
115 3 17 15 15
Tuple.java
in dyno-recipes/src/main/java/com/netflix/dyno/recipes/util
40 6 17 43 10
ConsulHostsSupplier.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib/consul
98 7 16 16 10
EurekaHostsSupplier.java
in dyno-contrib/src/main/java/com/netflix/dyno/contrib
85 8 16 19 9
MonitorConsole.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
133 8 15 11 4
HostToken.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl/lb
46 8 15 33 6
DynoJedisBatchCounter.java
in dyno-recipes/src/main/java/com/netflix/dyno/recipes/counter
76 9 14 18 3
MonitorConsoleResource.java
in dyno-core/src/main/java/com/netflix/dyno/connectionpool/impl
88 7 13 15 3
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...