aws-samples / aws-greengrass-lambda-functions
Unit Size

The distribution of size of units (measured in lines of code).

Intro
  • Unit size measurements show the distribution of size of units of code (methods, functions...).
  • Units are classified in four categories based on their size (lines of code): 1-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units).
  • You should aim at keeping units small (< 20 lines). Long units may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
Unit Size Overall
  • There are 465 units with 3,022 lines of code in units (51.5% of code).
    • 0 very long units (0 lines of code)
    • 5 long units (299 lines of code)
    • 17 medium size units (449 lines of code)
    • 47 small units (658 lines of code)
    • 396 very small units (1,616 lines of code)
0% | 9% | 14% | 21% | 53%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
java0% | 6% | 13% | 22% | 58%
js0% | 78% | 0% | 0% | 21%
py0% | 15% | 32% | 23% | 28%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
functions/HTTPNode0% | 95% | 0% | 0% | 4%
functions/CDDDockerJava0% | 15% | 7% | 34% | 43%
functions/CDDSenseHatJava0% | 7% | 12% | 18% | 61%
functions/LiFXPython0% | 88% | 0% | 0% | 11%
functions/CDDKVSJava0% | 46% | 20% | 0% | 32%
foundation/CDDBaselineJava0% | 0% | 18% | 27% | 54%
functions/HTTPPython0% | 0% | 100% | 0% | 0%
functions/CloudWatchMetricHandlerPython30% | 0% | 100% | 0% | 0%
functions/CDDBenchmarkJava0% | 0% | 28% | 25% | 46%
functions/CDDLatencyDashboard0% | 0% | 11% | 22% | 66%
functions/CDDMdnsServiceResolverJava0% | 0% | 16% | 18% | 64%
functions/SharedFile1Python30% | 0% | 91% | 0% | 8%
functions/SharedFile2Python30% | 0% | 91% | 0% | 8%
functions/CDDEmbeddedVaadinSkeletonJava0% | 0% | 0% | 26% | 73%
functions/SocketServerPython0% | 0% | 0% | 89% | 10%
functions/BenchmarkPython0% | 0% | 0% | 48% | 51%
functions/LatencyTesterPython30% | 0% | 0% | 82% | 17%
functions/SecretsManagerPython30% | 0% | 0% | 86% | 13%
functions/MqttClientPython30% | 0% | 0% | 50% | 50%
functions/RaspberryPiGpioPython30% | 0% | 0% | 37% | 62%
functions/CDDSkeletonJava0% | 0% | 0% | 0% | 100%
functions/CDDDMIJava0% | 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%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
exports.function_handler = function()
in functions/HTTPNode/HTTPNode.js
82 12 2
public void execute()
in functions/CDDDockerJava/src/main/java/com/amazonaws/greengrass/cdddocker/handlers/RequestHandler.java
58 13 1
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
private void startVideoPipeline()
in functions/CDDKVSJava/src/main/java/com/amazonaws/greengrass/cddkvs/handlers/StartupHandler.java
51 6 0
def function_handler()
in functions/HTTPPython/HTTPPython.py
44 12 2
public SenseHatLEDImage nextImage()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/animation/GlitchNumber.java
39 11 0
public OutputStreamWriter get()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/MacOutputStreamWriterFactory.java
31 5 2
default List listAllFiles()
in foundation/CDDBaselineJava/src/main/java/com/awslabs/aws/iot/greengrass/cdd/nativeprocesses/interfaces/NativeProcessHelper.java
30 2 0
public void pullImage()
in functions/CDDDockerJava/src/main/java/com/amazonaws/greengrass/cdddocker/docker/BasicDockerHelper.java
27 3 1
public SenseHatLEDImage merge()
in functions/CDDSenseHatJava/src/main/java/com/amazonaws/greengrass/cddsensehat/leds/SenseHatLEDPartialImage.java
26 7 3
def function_handler()
in functions/CloudWatchMetricHandlerPython3/CloudWatchMetricHandlerPython3.py
26 8 2
public void handleSdkError()
in foundation/CDDBaselineJava/src/main/java/com/awslabs/aws/iot/greengrass/cdd/providers/GreengrassSdkErrorHandler.java
25 6 1
public Optional invokeByName()
in foundation/CDDBaselineJava/src/main/java/com/awslabs/aws/iot/greengrass/cdd/communication/GreengrassCommunication.java
25 4 3
public void runProgramAndBlock()
in foundation/CDDBaselineJava/src/main/java/com/awslabs/aws/iot/greengrass/cdd/nativeprocesses/TempDirNativeProcessHelper.java
24 4 5
public void execute()
in functions/CDDKVSJava/src/main/java/com/amazonaws/greengrass/cddkvs/handlers/StartupHandler.java
23 3 1
private void createAndStartReportingTimer()
in functions/CDDBenchmarkJava/src/main/java/com/amazonaws/greengrass/cddbenchmark/handlers/StartupHandler.java
23 2 0
private void innerStart()
in functions/CDDLatencyDashboard/src/main/java/com/amazonaws/greengrass/cddlatencydashboard/vaadin/EmbeddedVaadinServer.java
22 2 0
def greengrass_internal_handler()
in functions/SharedFile1Python3/SharedFile1Python3.py
21 3 0
private void bindNewInterfaces()
in functions/CDDMdnsServiceResolverJava/src/main/java/com/amazonaws/greengrass/cddmdnsserviceresolver/handlers/StartupHandler.java
21 2 0