File Complexity Overall
  • There are 313 files with units, with 59,079 lines of code.
    • 5 very complex files (McCabe index sum 251+; 12,633 lines of code)
    • 10 complex files (McCabe index sum 126-250; 9,130 lines of code)
    • 44 medium complex files (McCabe index sum 51-125; 17,505 lines of code)
    • 42 slightly complex files (McCabe index sum 26-50; 8,028 lines of code)
    • 212 simple files (McCabe index sum 1-25; 11,783 lines of code)
  • 122 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system21% | 15% | 29% | 13% | 19%
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
java21% | 15% | 29% | 13% | 19%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
src21% | 15% | 29% | 13% | 19%
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
JavaInputAstVisitor.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/googlejavaformat/java
4675 242 995 21 31
Maps.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
2771 370 485 18 9
MapMakerInternalMap.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
2142 225 374 17 9
CommandLine.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt
1159 105 341 29 22
Synchronized.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
1886 237 274 15 4
CharMatcher.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/base
1051 151 240 23 15
ImportNormalizer.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt
747 46 210 28 44
AbstractMapBasedMultimap.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
1261 147 205 16 5
LongMath.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/math
865 38 203 23 28
Multimaps.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
1151 145 199 17 5
Sets.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
1183 121 187 16 9
InlineParserImpl.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/org/commonmark/internal
707 48 184 26 21
Preconditions.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/base
585 84 168 29 3
Iterators.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
796 73 150 19 7
Multisets.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
784 74 138 18 7
IntMath.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/math
413 26 119 29 17
OpsBuilder.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/googlejavaformat
440 41 116 26 45
Doc.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/googlejavaformat
503 69 115 23 11
TreeRangeMap.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
663 57 115 17 10
Lists.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
665 75 115 17 8
ImmutableRangeSet.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
587 53 110 19 7
ImmutableSet.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
580 60 108 19 7
DocumentParser.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/org/commonmark/internal
453 36 104 23 28
ImmutableMap.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
727 76 102 14 6
CoreMarkdownNodeRenderer.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/org/commonmark/renderer/markdown
446 34 101 23 23
Longs.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/primitives
442 47 98 22 12
JavaInput.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/googlejavaformat/java
523 39 97 19 31
TreeRangeSet.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
744 37 95 13 10
Predicates.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/base
456 75 95 21 3
ImmutableList.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
476 70 94 20 4
JfmtToolProvider.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt
423 15 92 22 22
ImmutableSortedMap.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
666 61 87 13 6
Ints.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/primitives
394 45 86 22 6
Collections2.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
425 47 80 19 6
Iterables.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
469 48 78 17 4
ImmutableMultimap.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
460 58 78 17 6
Cut.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
352 57 77 22 4
Booleans.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/primitives
320 34 75 23 6
LinkScanner.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/org/commonmark/internal/util
175 6 72 41 33
RegularImmutableSortedSet.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
254 29 69 27 12
JavaOutput.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/googlejavaformat/java
281 13 66 23 26
ImportOrderer.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/googlejavaformat/java
269 17 64 24 19
Ordering.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
293 36 64 22 7
CoreTextContentNodeRenderer.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/org/commonmark/renderer/text
281 33 62 22 12
Streams.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
551 28 62 11 5
ImmutableSortedSet.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
411 43 62 15 5
ImmutableMultiset.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
365 48 61 17 4
UnsignedLongs.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/primitives
240 23 61 25 8
Scanner.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/org/commonmark/parser/beta
218 18 58 27 8
Range.java
in src/com.netflix.tools.jfmt/classes/com/netflix/tools/jfmt/internal/com/google/common/collect
291 26 58 20 8
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...