File Complexity Overall
  • There are 259 files with units, with 26,256 lines of code.
    • 0 very complex files (McCabe index sum 251+; 0 lines of code)
    • 4 complex files (McCabe index sum 126-250; 2,523 lines of code)
    • 12 medium complex files (McCabe index sum 51-125; 4,463 lines of code)
    • 33 slightly complex files (McCabe index sum 26-50; 5,894 lines of code)
    • 210 simple files (McCabe index sum 1-25; 13,376 lines of code)
  • 92 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system0% | 9% | 16% | 22% | 50%
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% | 9% | 16% | 22% | 50%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
spectator-api0% | 8% | 25% | 25% | 40%
spectator-ext-ipc0% | 29% | 10% | 19% | 40%
spectator-reg-atlas0% | 12% | 12% | 26% | 48%
spectator-ext-sandbox0% | 0% | 36% | 21% | 42%
spectator-web-spring0% | 0% | 29% | 19% | 50%
spectator-ext-gc0% | 0% | 0% | 54% | 45%
spectator-ext-aws0% | 0% | 0% | 77% | 22%
spectator-ext-aws20% | 0% | 0% | 100% | 0%
spectator-ext-placeholders0% | 0% | 0% | 35% | 64%
spectator-ext-jvm0% | 0% | 0% | 0% | 100%
spectator-reg-stateless0% | 0% | 0% | 0% | 100%
spectator-ext-spark0% | 0% | 0% | 0% | 100%
spectator-reg-servo0% | 0% | 0% | 0% | 100%
spectator-reg-sidecar0% | 0% | 0% | 0% | 100%
spectator-reg-micrometer0% | 0% | 0% | 0% | 100%
spectator-nflx-plugin0% | 0% | 0% | 0% | 100%
spectator-ext-ipcservlet0% | 0% | 0% | 0% | 100%
spectator-ext-log4j20% | 0% | 0% | 0% | 100%
spectator-nflx-tagging0% | 0% | 0% | 0% | 100%
spectator-agent0% | 0% | 0% | 0% | 100%
spectator-reg-metrics30% | 0% | 0% | 0% | 100%
spectator-reg-metrics50% | 0% | 0% | 0% | 100%
spectator-ext-log4j10% | 0% | 0% | 0% | 100%
spectator-perf0% | 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
IpcLogEntry.java
in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc
838 89 185 22 12
PatternUtils.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
540 27 182 34 27
QueryIndex.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas/impl
667 37 165 25 22
Optimizer.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
478 32 150 31 10
Hash64.java
in spectator-api/src/main/java/com/netflix/spectator/impl
532 53 112 21 19
Parser.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
332 22 107 32 20
PrefixTree.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas/impl
368 30 107 29 12
HttpLogEntry.java
in spectator-ext-sandbox/src/main/java/com/netflix/spectator/sandbox
382 54 86 23 7
ArrayTagSet.java
in spectator-api/src/main/java/com/netflix/spectator/api
393 26 83 21 11
Parser.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas/impl
268 13 75 28 38
CardinalityLimiters.java
in spectator-api/src/main/java/com/netflix/spectator/api/patterns
327 14 70 21 13
PrototypeMeasurementFilter.java
in spectator-web-spring/src/main/java/com/netflix/spectator/controllers/filter
206 26 64 31 8
Timer.java
in spectator-api/src/main/java/com/netflix/spectator/api
697 59 61 9 2
PolledMeter.java
in spectator-api/src/main/java/com/netflix/spectator/api/patterns
489 28 58 12 6
AsciiSet.java
in spectator-api/src/main/java/com/netflix/spectator/impl
177 20 54 31 8
HttpRequestBuilder.java
in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc/http
292 30 51 17 11
Registry.java
in spectator-api/src/main/java/com/netflix/spectator/api
209 39 49 23 4
IndexOfSeqMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
188 25 48 26 13
ServerGroup.java
in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc
120 14 46 38 11
Utils.java
in spectator-api/src/main/java/com/netflix/spectator/api
172 19 43 25 6
HttpRequestBuilder.java
in spectator-ext-sandbox/src/main/java/com/netflix/spectator/sandbox
218 24 42 19 9
AtlasConfig.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas
110 23 41 37 4
IndexOfMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
148 19 40 27 9
Scheduler.java
in spectator-api/src/main/java/com/netflix/spectator/impl
278 18 38 14 7
CompositeRegistry.java
in spectator-api/src/main/java/com/netflix/spectator/api
284 15 38 13 4
GcLogger.java
in spectator-ext-gc/src/main/java/com/netflix/spectator/gc
206 9 37 18 11
Evaluator.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas/impl
211 14 37 18 15
HostSanitizer.java
in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc/http
169 9 35 21 10
StringReplace.java
in spectator-api/src/jmh/java/com/netflix/spectator/perf
151 23 35 23 4
ZeroOrMoreMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
122 14 34 28 11
AbstractRegistry.java
in spectator-api/src/main/java/com/netflix/spectator/api
265 13 34 13 11
Rollups.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas
146 12 33 23 11
SeqMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
133 17 32 24 5
PercentileBuckets.java
in spectator-api/src/main/java/com/netflix/spectator/api/histogram
179 10 32 18 9
Query.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas/impl
596 20 32 5 5
StepDouble.java
in spectator-api/src/main/java/com/netflix/spectator/impl
139 17 31 22 4
PrototypeMeasurementFilterSpecification.java
in spectator-web-spring/src/main/java/com/netflix/spectator/controllers/filter
138 24 30 22 3
SpectatorRequestMetricCollector.java
in spectator-ext-aws/src/main/java/com/netflix/spectator/aws
203 15 30 15 6
SpectatorExecutionInterceptor.java
in spectator-ext-aws2/src/main/java/com/netflix/spectator/aws2
141 11 30 21 8
PathSanitizer.java
in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc/http
89 8 29 33 11
OrMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
122 13 29 24 5
AtlasRegistry.java
in spectator-reg-atlas/src/main/java/com/netflix/spectator/atlas
345 12 29 8 6
OrStartsWithMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
125 20 28 22 6
IpcStatus.java
in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc
74 4 27 36 16
SeqServerGroup.java
in spectator-ext-ipc/src/jmh/java/com/netflix/spectator/ipc
85 8 27 32 5
BucketFunctions.java
in spectator-api/src/main/java/com/netflix/spectator/api/histogram
188 21 27 14 3
DefaultPlaceholderId.java
in spectator-ext-placeholders/src/main/java/com/netflix/spectator/placeholders
111 17 26 23 7
RepeatMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
95 12 26 27 7
DistinctCountSketch.java
in spectator-api/src/main/java/com/netflix/spectator/api/patterns
134 13 26 19 6
ZeroOrOneMatcher.java
in spectator-api/src/main/java/com/netflix/spectator/impl/matcher
95 14 25 26 6
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...