aws-samples / aws-greengrass-lambda-functions
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 465 units with 3,022 lines of code in units (51.5% of code).
    • 0 very complex units (0 lines of code)
    • 0 complex units (0 lines of code)
    • 6 medium complex units (331 lines of code)
    • 6 simple units (144 lines of code)
    • 453 very simple units (2,547 lines of code)
0% | 0% | 10% | 4% | 84%
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% | 5% | 4% | 89%
py0% | 0% | 28% | 7% | 64%
js0% | 0% | 78% | 0% | 21%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
functions/CDDSenseHatJava0% | 0% | 12% | 5% | 81%
functions/HTTPNode0% | 0% | 95% | 0% | 4%
functions/CDDDockerJava0% | 0% | 15% | 0% | 84%
functions/LiFXPython0% | 0% | 88% | 0% | 11%
functions/HTTPPython0% | 0% | 100% | 0% | 0%
functions/CDDKVSJava0% | 0% | 0% | 46% | 53%
functions/CloudWatchMetricHandlerPython30% | 0% | 0% | 100% | 0%
foundation/CDDBaselineJava0% | 0% | 0% | 3% | 96%
functions/CDDLatencyDashboard0% | 0% | 0% | 0% | 100%
functions/CDDMdnsServiceResolverJava0% | 0% | 0% | 0% | 100%
functions/CDDEmbeddedVaadinSkeletonJava0% | 0% | 0% | 0% | 100%
functions/CDDBenchmarkJava0% | 0% | 0% | 0% | 100%
functions/CDDSkeletonJava0% | 0% | 0% | 0% | 100%
functions/CDDDMIJava0% | 0% | 0% | 0% | 100%
functions/BenchmarkPython0% | 0% | 0% | 0% | 100%
functions/RaspberryPiGpioPython30% | 0% | 0% | 0% | 100%
functions/MqttClientPython30% | 0% | 0% | 0% | 100%
functions/SharedFile1Python30% | 0% | 0% | 0% | 100%
functions/SharedFile2Python30% | 0% | 0% | 0% | 100%
functions/SocketServerPython0% | 0% | 0% | 0% | 100%
functions/LatencyTesterPython30% | 0% | 0% | 0% | 100%
functions/SecretsManagerPython30% | 0% | 0% | 0% | 100%
functions/HelloWorldPython30% | 0% | 0% | 0% | 100%
functions/BasicIngestPythonWithCloudFormation0% | 0% | 0% | 0% | 100%
functions/HelloWorldNode0% | 0% | 0% | 0% | 100%
functions/HelloWorldPythonWithCloudFormation0% | 0% | 0% | 0% | 100%
functions/WebServerNode0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public SenseHatLEDImage nextImage()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/animation/Fire.java
54 25 0
def function_handler()
in functions/LiFXPython/LiFXPython.py
54 14 2
public void execute()
in functions/CDDDockerJava/src/main/java/com/amazonaws/greengrass/cdddocker/handlers/RequestHandler.java
58 13 1
def function_handler()
in functions/HTTPPython/HTTPPython.py
44 12 2
exports.function_handler = function()
in functions/HTTPNode/HTTPNode.js
82 12 2
public SenseHatLEDImage nextImage()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/animation/GlitchNumber.java
39 11 0
def function_handler()
in functions/CloudWatchMetricHandlerPython3/CloudWatchMetricHandlerPython3.py
26 8 2
public SenseHatLEDImage merge()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/SenseHatLEDPartialImage.java
26 7 3
private void evaluateCell()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/animation/Fire.java
8 6 3
public boolean equals()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/SenseHatLED.java
8 6 1
private void startVideoPipeline()
in functions/CDDKVSJava/src/main/java/com/amazonaws/greengrass/cddkvs/handlers/StartupHandler.java
51 6 0
public void handleSdkError()
in foundation/CDDBaselineJava/src/main/java/com/awslabs/aws/iot/greengrass/cdd/providers/GreengrassSdkErrorHandler.java
25 6 1
public OutputStreamWriter get()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/MacOutputStreamWriterFactory.java
31 5 2
public String toString()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/SenseHatLED.java
3 4 0
def greengrass_mqtt_client_loop()
in functions/MqttClientPython3/MqttClientPython3.py
12 4 0
public void messageFromCloud()
in functions/CDDLatencyDashboard/src/main/java/com/amazonaws/greengrass/cddlatencydashboard/vaadin/LatencyDashboardView.java
20 4 1
def greengrass_secrets_manager_run()
in functions/SecretsManagerPython3/SecretsManagerPython3.py
13 4 0
public Optional stopContainer()
in functions/CDDDockerJava/src/main/java/com/amazonaws/greengrass/cdddocker/docker/BasicDockerHelper.java
20 4 1
def greengrass_socket_server_run()
in functions/SocketServerPython/SocketServerPython.py
17 4 0
public void updateGcInfo()
in functions/CDDEmbeddedVaadinSkeletonJava/src/main/java/com/amazonaws/greengrass/cddembeddedvaadinskeleton/vaadin/MainView.java
20 4 0