File Complexity Overall
  • There are 609 files with units, with 59,448 lines of code.
    • 2 very complex files (McCabe index sum 251+; 2,092 lines of code)
    • 5 complex files (McCabe index sum 126-250; 2,427 lines of code)
    • 50 medium complex files (McCabe index sum 51-125; 16,025 lines of code)
    • 77 slightly complex files (McCabe index sum 26-50; 12,596 lines of code)
    • 475 simple files (McCabe index sum 1-25; 26,308 lines of code)
  • 92 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system3% | 4% | 26% | 21% | 44%
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
java3% | 4% | 26% | 21% | 44%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
hollow2% | 2% | 32% | 20% | 42%
hollow-protoadapter54% | 30% | 0% | 8% | 6%
hollow-jsonadapter0% | 28% | 21% | 14% | 35%
hollow-diff-ui0% | 0% | 4% | 26% | 68%
hollow-zenoadapter0% | 0% | 0% | 80% | 19%
hollow-explorer-ui0% | 0% | 0% | 43% | 56%
hollow-ui-tools0% | 0% | 0% | 47% | 52%
hollow-fakedata0% | 0% | 0% | 62% | 37%
hollow-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
HollowObjectTypeMapper.java
in hollow/src/main/java/com/netflix/hollow/core/write/objectmapper
1068 31 330 31 47
HollowMessageMapper.java
in hollow-protoadapter/src/main/java/com/netflix/hollow/protoadapter
1024 28 283 28 50
VarInt.java
in hollow/src/main/java/com/netflix/hollow/core/memory/encoding
297 27 148 50 18
HollowProtoAdapter.java
in hollow-protoadapter/src/main/java/com/netflix/hollow/protoadapter
577 29 144 25 26
HollowJsonAdapter.java
in hollow-jsonadapter/src/main/java/com/netflix/hollow/jsonadapter
505 28 138 27 25
HollowPrimaryKeyIndex.java
in hollow/src/main/java/com/netflix/hollow/core/index
544 41 136 25 10
HollowUniqueKeyIndex.java
in hollow/src/main/java/com/netflix/hollow/core/index
504 41 127 25 10
HollowConsumer.java
in hollow/src/main/java/com/netflix/hollow/api/consumer
667 92 122 18 11
AbstractHollowProducer.java
in hollow/src/main/java/com/netflix/hollow/api/producer
799 38 116 15 13
HollowTypeWriteState.java
in hollow/src/main/java/com/netflix/hollow/core/write
438 42 109 25 10
HollowReadFieldUtils.java
in hollow/src/main/java/com/netflix/hollow/core/read
244 14 96 39 25
HollowProducer.java
in hollow/src/main/java/com/netflix/hollow/api/producer
488 70 95 19 14
HollowPOJOClassGenerator.java
in hollow/src/main/java/com/netflix/hollow/api/codegen
368 22 92 25 11
ByteArrayOrdinalMap.java
in hollow/src/main/java/com/netflix/hollow/core/memory
404 41 89 22 10
HollowObjectTypeReadState.java
in hollow/src/main/java/com/netflix/hollow/core/read/engine/object
445 33 88 20 10
HollowSparseIntegerSet.java
in hollow/src/main/java/com/netflix/hollow/core/index
351 29 88 25 12
HollowRecordJsonStringifier.java
in hollow/src/main/java/com/netflix/hollow/tools/stringifier
376 18 85 23 11
HollowCombiner.java
in hollow/src/main/java/com/netflix/hollow/tools/combine
348 22 84 24 33
HollowWriteStateEngine.java
in hollow/src/main/java/com/netflix/hollow/core/write
343 42 83 24 10
TransitiveSetTraverser.java
in hollow/src/main/java/com/netflix/hollow/tools/traverse
262 15 81 31 10
HollowMapTypeReadState.java
in hollow/src/main/java/com/netflix/hollow/core/read/engine/map
390 33 81 21 10
HollowCodeGenerationUtils.java
in hollow/src/main/java/com/netflix/hollow/api/codegen
340 25 81 24 9
FlatRecordDumper.java
in hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/flatrecords
312 13 80 26 27
HollowObjectTypeWriteState.java
in hollow/src/main/java/com/netflix/hollow/core/write
335 22 79 24 12
HollowAPIGenerator.java
in hollow/src/main/java/com/netflix/hollow/api/codegen
321 32 79 25 11
FilteredHollowBlobWriter.java
in hollow/src/main/java/com/netflix/hollow/tools/filter
311 15 76 24 23
HollowMapTypeWriteState.java
in hollow/src/main/java/com/netflix/hollow/core/write
387 13 76 20 16
HollowObjectSchema.java
in hollow/src/main/java/com/netflix/hollow/core/schema
276 27 76 28 11
ThreadSafeBitSet.java
in hollow/src/main/java/com/netflix/hollow/core/memory
272 23 75 28 11
HollowSetTypeWriteState.java
in hollow/src/main/java/com/netflix/hollow/core/write
361 13 72 20 16
HollowBlobReader.java
in hollow/src/main/java/com/netflix/hollow/core/read/engine
278 27 72 26 9
HollowReadStateEngine.java
in hollow/src/main/java/com/netflix/hollow/core/read/engine
279 45 71 25 8
HollowSetTypeReadState.java
in hollow/src/main/java/com/netflix/hollow/core/read/engine/set
347 31 71 20 10
TST.java
in hollow/src/main/java/com/netflix/hollow/core/index
266 20 71 27 14
StaleHollowReferenceDetector.java
in hollow/src/main/java/com/netflix/hollow/api/client
218 24 71 33 12
HollowObjectJavaGenerator.java
in hollow/src/main/java/com/netflix/hollow/api/codegen/objects
392 19 68 17 18
HollowClientUpdater.java
in hollow/src/main/java/com/netflix/hollow/api/client
296 23 67 23 24
HollowHistory.java
in hollow/src/main/java/com/netflix/hollow/tools/history
331 23 65 20 8
TypeFilter.java
in hollow/src/main/java/com/netflix/hollow/core/read/filter
304 31 65 21 19
HollowHashIndexBuilder.java
in hollow/src/main/java/com/netflix/hollow/core/index
342 19 65 19 17
HollowStateDeltaPatcher.java
in hollow/src/main/java/com/netflix/hollow/tools/patch/delta
338 18 64 19 12
HollowListTypeWriteState.java
in hollow/src/main/java/com/netflix/hollow/core/write
271 13 63 23 16
CodeGeneratorConfig.java
in hollow/src/main/java/com/netflix/hollow/api/codegen
194 30 63 32 22
HollowJsonAdapterPrimaryKeyFinder.java
in hollow-jsonadapter/src/main/java/com/netflix/hollow/jsonadapter
194 6 62 32 41
SegmentedByteArray.java
in hollow/src/main/java/com/netflix/hollow/core/memory
288 19 61 21 12
FlatRecordOrdinalReader.java
in hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/flatrecords
255 19 60 24 12
DiffViewOutputGenerator.java
in hollow-diff-ui/src/main/java/com/netflix/hollow/diffview
172 15 60 35 11
HollowJsonAdapterSchemaDiscoverer.java
in hollow-jsonadapter/src/main/java/com/netflix/hollow/jsonadapter/discover
183 13 59 32 23
DuplicateDataDetectionValidator.java
in hollow/src/main/java/com/netflix/hollow/api/producer/validation
301 27 58 19 10
HollowHashIndex.java
in hollow/src/main/java/com/netflix/hollow/core/index
254 27 57 22 9
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...