File Complexity Overall
  • There are 208 files with units, with 20,701 lines of code.
    • 1 very complex files (McCabe index sum 251+; 1,467 lines of code)
    • 0 complex files (McCabe index sum 126-250; 0 lines of code)
    • 8 medium complex files (McCabe index sum 51-125; 2,843 lines of code)
    • 27 slightly complex files (McCabe index sum 26-50; 5,019 lines of code)
    • 172 simple files (McCabe index sum 1-25; 11,372 lines of code)
  • 42 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system7% | 0% | 13% | 24% | 54%
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
java7% | 0% | 13% | 24% | 54%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
hystrix-core11% | 0% | 12% | 28% | 46%
hystrix-contrib0% | 0% | 16% | 19% | 64%
hystrix-serialization0% | 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
AbstractCommand.java
in hystrix-core/src/main/java/com/netflix/hystrix
1467 124 267 18 21
FallbackMethod.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils
346 36 90 26 15
HystrixCommandProperties.java
in hystrix-core/src/main/java/com/netflix/hystrix
438 86 88 20 2
MetaHolder.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command
409 71 85 21 3
HystrixServoMetricsPublisherCommand.java
in hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher
521 67 70 13 2
ExecutionResult.java
in hystrix-core/src/main/java/com/netflix/hystrix
295 39 70 24 7
HystrixRollingNumber.java
in hystrix-core/src/main/java/com/netflix/hystrix/util
333 31 63 19 10
HystrixRollingPercentile.java
in hystrix-core/src/main/java/com/netflix/hystrix/util
317 26 59 19 10
HystrixRequestCache.java
in hystrix-core/src/main/java/com/netflix/hystrix
184 16 51 28 11
HystrixPropertiesManager.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/conf
344 45 50 15 5
HystrixCommandAspect.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj
280 15 48 17 11
HystrixPlugins.java
in hystrix-core/src/main/java/com/netflix/hystrix/strategy
211 21 47 22 6
HystrixPropertiesChainedArchaiusProperty.java
in hystrix-core/src/main/java/com/netflix/hystrix/strategy/properties
225 42 46 20 4
MethodProvider.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils
209 24 44 21 8
HystrixCollapserProperties.java
in hystrix-core/src/main/java/com/netflix/hystrix
205 40 40 20 1
Striped64.java
in hystrix-core/src/main/java/com/netflix/hystrix/util
173 7 38 22 27
HystrixCommand.java
in hystrix-core/src/main/java/com/netflix/hystrix
199 19 36 18 13
HystrixEventType.java
in hystrix-core/src/main/java/com/netflix/hystrix
103 6 36 35 19
HystrixCommandMetrics.java
in hystrix-core/src/main/java/com/netflix/hystrix
236 31 36 15 4
HystrixThreadPoolProperties.java
in hystrix-core/src/main/java/com/netflix/hystrix
168 33 35 21 3
HystrixCircuitBreaker.java
in hystrix-core/src/main/java/com/netflix/hystrix
170 16 35 21 6
HystrixObservableCollapser.java
in hystrix-core/src/main/java/com/netflix/hystrix
252 21 35 14 8
HystrixThreadPoolMetrics.java
in hystrix-core/src/main/java/com/netflix/hystrix
178 30 34 19 3
HystrixCollapser.java
in hystrix-core/src/main/java/com/netflix/hystrix
220 22 32 15 6
RequestBatch.java
in hystrix-core/src/main/java/com/netflix/hystrix/collapser
163 6 32 20 14
CachedValuesHistogram.java
in hystrix-core/src/main/java/com/netflix/hystrix/metric
107 6 32 30 27
HystrixPropertiesChainedProperty.java
in hystrix-core/src/main/java/com/netflix/hystrix/strategy/properties
168 24 32 19 5
HystrixCommandExecutionHook.java
in hystrix-core/src/main/java/com/netflix/hystrix/strategy/executionhook
106 32 32 30 1
HystrixCommandConfiguration.java
in hystrix-core/src/main/java/com/netflix/hystrix/config
201 31 31 15 1
AbstractHystrixCommand.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command
130 13 28 22 5
LongMaxUpdater.java
in hystrix-core/src/main/java/com/netflix/hystrix/util
85 12 28 33 9
AopUtils.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils
133 8 27 20 7
HystrixMetricsPoller.java
in hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/metrics/eventstream
385 14 27 7 6
LongAdder.java
in hystrix-core/src/main/java/com/netflix/hystrix/util
87 14 26 30 7
HystrixThreadPool.java
in hystrix-core/src/main/java/com/netflix/hystrix
139 12 26 19 7
HystrixContextScheduler.java
in hystrix-core/src/main/java/com/netflix/hystrix/strategy/concurrency
142 20 26 18 3
GenericObservableCommand.java
in hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command
128 7 25 20 7
Hystrix.java
in hystrix-core/src/main/java/com/netflix/hystrix
123 15 25 20 4
HystrixRequestLog.java
in hystrix-core/src/main/java/com/netflix/hystrix
138 7 25 18 16
HystrixRequestEvents.java
in hystrix-core/src/main/java/com/netflix/hystrix/metric
143 14 25 17 7
SerialHystrixDashboardData.java
in hystrix-serialization/src/main/java/com/netflix/hystrix/serial
341 10 23 7 5
CollapsedRequestSubject.java
in hystrix-core/src/main/java/com/netflix/hystrix/collapser
98 11 23 23 4
CommandExecutionPerfTest.java
in hystrix-core/src/jmh/java/com/netflix/hystrix/perf
269 15 23 9 2
HystrixServoMetricsPublisherThreadPool.java
in hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher
217 20 22 10 2
HystrixRollingNumberEvent.java
in hystrix-core/src/main/java/com/netflix/hystrix/util
40 4 21 53 18
HystrixServoMetricsPublisherCollapser.java
in hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher
227 18 20 9 2
HystrixYammerMetricsPublisherCommand.java
in hystrix-contrib/hystrix-yammer-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/yammermetricspublisher
462 17 20 4 2
RequestCollapser.java
in hystrix-core/src/main/java/com/netflix/hystrix/collapser
102 6 20 20 7
HystrixConfigurationStream.java
in hystrix-core/src/main/java/com/netflix/hystrix/config
153 16 19 12 2
HystrixCollapserMetrics.java
in hystrix-core/src/main/java/com/netflix/hystrix
112 17 19 17 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...