File Complexity Overall
  • There are 96 files with units, with 16,443 lines of code.
    • 2 very complex files (McCabe index sum 251+; 2,199 lines of code)
    • 6 complex files (McCabe index sum 126-250; 4,694 lines of code)
    • 5 medium complex files (McCabe index sum 51-125; 1,837 lines of code)
    • 20 slightly complex files (McCabe index sum 26-50; 3,709 lines of code)
    • 63 simple files (McCabe index sum 1-25; 4,004 lines of code)
  • 10 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system13% | 28% | 11% | 22% | 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
java8% | 22% | 13% | 26% | 29%
c84% | 0% | 0% | 12% | 2%
h0% | 100% | 0% | 0% | 0%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
src13% | 28% | 11% | 22% | 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
CommandLine.java
in src/com.netflix.tools.cli/com/netflix/tools/cli
1198 105 353 29 22
main.c
in src/launcher
1001 31 291 29 106
jni.h
in src/launcher/include
1705 224 224 13 1
Installer.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
637 34 152 24 16
ToolRuntime.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
645 55 150 23 10
JaInvocation.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
508 1 150 30 150
CommandRunner.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
525 30 135 26 38
ResolvedClassModels.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
674 51 126 19 9
ToolRunner.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
520 38 89 17 8
Ja.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
293 13 77 26 18
ModuleInfo.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
357 17 76 21 14
JmhToolProvider.java
in src/com.netflix.tools.jmh/com/netflix/tools/jmh
451 25 73 16 18
SourceGenerator.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
216 10 58 27 9
ExecutionTraceInstrumentation.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
295 24 50 17 7
ToolArguments.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
171 12 48 28 12
dispatcher.c
in src/launcher
149 4 47 32 20
TestOutputCapture.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
197 19 46 23 7
MavenDeploymentCommand.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
149 7 46 31 23
ModuleRequirements.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
221 9 45 20 17
ModuleAssembler.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
344 15 44 13 6
TestResultStore.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
199 21 42 21 7
ToolOption.java
in src/com.netflix.tools.launcher/com/netflix/tools/launcher
151 22 42 28 12
TestRunner.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
297 13 40 13 11
FilteredModuleContent.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
146 12 40 27 9
ModuleSourcePath.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
209 1 38 18 38
JmodPackager.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
159 9 38 24 12
BuiltinCommand.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
165 23 36 22 10
LauncherRuntimeOptions.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
109 6 32 29 13
SemanticVersion.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
116 1 30 26 30
LauncherCatalog.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
105 9 28 27 8
InstalledCommandModule.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
279 11 27 10 9
JUnitTestResults.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
109 6 26 24 7
AotWarmup.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
139 6 26 19 17
Configurations.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
138 17 25 18 6
RequireRequest.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
96 1 25 26 25
RuntimeImageHash.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
139 10 25 18 8
JUnitExecutionTrace.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
175 13 24 14 8
FilteredModulePath.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
110 7 24 22 9
AutomaticModules.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
91 10 23 25 6
ExecutionTrace.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
88 9 22 25 4
ToolDefinition.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
171 1 22 13 22
JaOptions.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
103 20 20 19 1
ResolutionArguments.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
63 6 20 32 5
SelectorCompletion.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
98 7 20 20 4
TestDiscovery.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
106 4 19 18 7
AssembleCommand.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
70 5 19 27 13
ModuleOptions.java
in src/com.netflix.tools.launcher/com/netflix/tools/launcher
108 11 19 18 5
ToolLauncher.java
in src/com.netflix.tools.launcher/com/netflix/tools/launcher
111 7 18 16 4
ToolCatalog.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
98 9 17 17 4
JUnitTestSummary.java
in src/com.netflix.tools.ja/com/netflix/tools/ja
110 6 16 15 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...