File Complexity Overall
  • There are 796 files with units, with 123,323 lines of code.
    • 13 very complex files (McCabe index sum 251+; 21,177 lines of code)
    • 23 complex files (McCabe index sum 126-250; 18,778 lines of code)
    • 82 medium complex files (McCabe index sum 51-125; 29,423 lines of code)
    • 141 slightly complex files (McCabe index sum 26-50; 24,200 lines of code)
    • 537 simple files (McCabe index sum 1-25; 29,745 lines of code)
  • 240 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system17% | 15% | 23% | 19% | 24%
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
java17% | 15% | 23% | 19% | 24%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
src17% | 15% | 23% | 19% | 24%
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
BasicStreamReader.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sr
3498 151 1018 29 50
MXParser.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/plexus/util/xml/pull
2485 82 804 32 64
ModelMerger.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/model/merge
2128 237 614 29 12
FullDTDReader.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/dtd
2213 72 544 25 37
DOMWrappingReader.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/stax2/ri/dom
1602 125 407 25 28
StreamScanner.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sr
1467 83 403 27 41
Jig.java
in src/com.netflix.tools.jig/com/netflix/tools/jig
1467 63 359 24 65
CommandLine.java
in src/com.netflix.tools.jig/com/netflix/tools/jig
1159 105 341 29 22
BufferingXmlWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sw
1302 57 302 23 24
StringUtils.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/plexus/util
979 91 289 30 15
MXSerializer.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/plexus/util/xml/pull
798 43 282 35 32
ValueDecoderFactory.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/stax2/ri/typed
1089 81 273 25 16
WstxSAXParser.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sax
990 86 253 26 19
BaseStreamWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sw
1110 75 244 22 33
ReaderConfig.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/api
1043 106 242 23 64
StringVisitorModelInterpolator.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/model/interpolation
996 43 229 23 17
SettingsXpp3Reader.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/settings/io/xpp3
1108 39 221 20 28
DefaultModelValidator.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/model/validation
1435 44 211 15 20
ISOLatin1XmlWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sw
641 12 210 33 25
SourceModuleCompilation.java
in src/com.netflix.tools.jig/com/netflix/module/compile/internal
1056 55 199 19 52
StreamBootstrapper.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/io
670 34 194 29 26
TextBuffer.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/util
893 47 192 22 12
DefaultModelBuilder.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/model/building
1014 45 190 19 25
AsciiXmlWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sw
610 12 190 31 23
RepositorySystemSupplier.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/eclipse/aether/supplier
979 121 181 18 2
ComparableVersion.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/artifact/versioning
592 52 177 30 23
Stax2ReaderAdapter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/stax2/ri
792 74 161 20 27
InputElementStack.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sr
605 52 156 26 24
AttributeCollector.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sr
680 42 154 23 18
ModuleCompiler.java
in src/com.netflix.tools.jig/com/netflix/module/compile
932 46 146 16 32
SourceModuleOutput.java
in src/com.netflix.tools.jig/com/netflix/module/compile/internal
809 37 136 17 28
EncodingXmlWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sw
701 48 133 19 16
ClassicConflictResolver.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/eclipse/aether/util/graph/transformer
596 46 132 22 18
WriterConfig.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/api
527 61 132 25 39
ModuleProxyTransporter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/module/maven/transport
619 39 129 21 17
AbstractDependencyManager.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/eclipse/aether/util/graph/manager
370 24 126 34 25
XmlReader.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/codehaus/plexus/util/xml
390 27 122 31 20
MavenModelMerger.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/model/merge
479 41 120 25 8
ArtifactCandidates.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/module
489 33 118 24 14
ModuleRepositorySession.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/module
602 44 115 19 8
TypedStreamReader.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sr
538 34 114 21 28
WstxDOMWrappingWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/dom
416 30 112 27 18
SettingsXpp3Writer.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/settings/io/xpp3
459 17 111 24 24
BaseNsStreamWriter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/com/ctc/wstx/sw
486 28 111 23 18
ImmutableCollections.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/internal/xml
494 86 110 22 6
ImmutableCollections.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/api/xml
494 86 110 22 6
ImmutableCollections.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/api/model
497 86 110 22 6
ImmutableCollections.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/api/metadata
497 86 110 22 6
JdkTransporter.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/module/maven/transport
691 25 108 16 26
VersionRange.java
in src/com.netflix.tools.jig/com/netflix/tools/jig/internal/org/apache/maven/artifact/versioning
337 17 104 31 28
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...