awslabs / disco
Conditional Complexity

The distribution of complexity of units (measured with McCabe index).

Intro
  • Conditional complexity (also called cyclomatic complexity) is a term used to measure the complexity of software. The term refers to the number of possible paths through a program function. A higher value ofter means higher maintenance and testing costs (infosecinstitute.com).
  • Conditional complexity is calculated by counting all conditions in the program that can affect the execution path (e.g. if statement, loops, switches, and/or operators, try and catch blocks...).
  • Conditional complexity is measured at the unit level (methods, functions...).
  • Units are classified in four categories based on the measured McCabe index: 1-5 (simple units), 6-10 (medium complex units), 11-25 (complex units), 26+ (very complex units).
Learn more...
Conditional Complexity Overall
  • There are 612 units with 3,989 lines of code in units (58.6% of code).
    • 0 very complex units (0 lines of code)
    • 0 complex units (0 lines of code)
    • 2 medium complex units (79 lines of code)
    • 20 simple units (502 lines of code)
    • 590 very simple units (3,408 lines of code)
0% | 0% | 1% | 12% | 85%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
51+
26-50
11-25
6-10
1-5
java0% | 0% | 1% | 12% | 85%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
disco-java-agent-instrumentation-preprocess0% | 0% | 14% | 15% | 70%
disco-java-agent0% | 0% | 0% | 11% | 88%
disco-java-agent-web0% | 0% | 0% | 38% | 61%
disco-java-agent-sql0% | 0% | 0% | 7% | 92%
disco-java-agent-aws0% | 0% | 0% | 0% | 100%
disco-java-agent-example0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public PreprocessConfig parseCommandLine()
in disco-java-agent-instrumentation-preprocess/src/main/java/software/amazon/disco/instrumentation/preprocess/cli/PreprocessConfigParser.java
42 15 1
protected OptionToMatch matchArgWithFlag()
in disco-java-agent-instrumentation-preprocess/src/main/java/software/amazon/disco/instrumentation/preprocess/cli/PreprocessConfigParser.java
37 15 3
static
in disco-java-agent/disco-java-agent-core/src/integ/java/software/amazon/disco/agent/integtest/concurrent/source/TestForkJoinTaskFactory.java
20 10 0
public AgentConfig parseCommandLine()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/config/AgentConfigParser.java
35 10 1
public static Collection apply()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
24 9 0
private static void dump()
in disco-java-agent/disco-java-agent/src/main/java/software/amazon/disco/agent/DiscoAgent.java
21 8 1
public static Set processInstallables()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
26 8 0
static void processJarFile()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
34 8 3
public static void service()
in disco-java-agent-web/src/main/java/software/amazon/disco/agent/web/servlet/HttpServletServiceInterceptor.java
59 8 4
public static void scan()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
29 7 2
static boolean loadJar()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
24 7 3
static void processInstallableClasses()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
22 7 4
public static String parseQueryFromStatement()
in disco-java-agent-sql/src/main/java/software/amazon/disco/agent/sql/JdbcExecuteInterceptor.java
9 6 2
public Object invoke()
in disco-java-agent/disco-java-agent-api/src/main/java/software/amazon/disco/agent/reflect/MethodHandleWrapper.java
21 6 2
static void processListenerClasses()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/plugin/PluginDiscovery.java
21 6 3
public DiscoAgentTemplate()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/DiscoAgentTemplate.java
20 6 1
public Collection install()
in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/DiscoAgentTemplate.java
24 6 3
public static Object intercept()
in disco-java-agent-web/src/main/java/software/amazon/disco/agent/web/apache/httpclient/ApacheHttpClientInterceptor.java
29 6 3
protected void copyExistingJarEntries()
in disco-java-agent-instrumentation-preprocess/src/main/java/software/amazon/disco/instrumentation/preprocess/export/JarExportStrategy.java
19 6 3
protected Path moveTempFileToDestination()
in disco-java-agent-instrumentation-preprocess/src/main/java/software/amazon/disco/instrumentation/preprocess/export/JarExportStrategy.java
26 6 3