aws-samples / aws-lambda-extensions
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 249 units with 3,807 lines of code in units (61.9% of code).
    • 0 very complex units (0 lines of code)
    • 0 complex units (0 lines of code)
    • 6 medium complex units (309 lines of code)
    • 42 simple units (1,186 lines of code)
    • 201 very simple units (2,312 lines of code)
0% | 0% | 8% | 31% | 60%
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
go0% | 0% | 10% | 40% | 48%
py0% | 0% | 4% | 6% | 89%
java0% | 0% | 0% | 24% | 75%
js0% | 0% | 0% | 0% | 100%
cs0% | 0% | 0% | 0% | 100%
rb0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
go-example-adaptive-batching-extension0% | 0% | 23% | 24% | 51%
go-example-logs-api-extension0% | 0% | 13% | 32% | 53%
kinesisfirehose-logs-extension-demo0% | 0% | 17% | 36% | 45%
s3-logs-extension-demo-zip-archive0% | 0% | 9% | 0% | 90%
s3-logs-extension-demo-container-image0% | 0% | 10% | 0% | 90%
go-example-crash-uploader-extension0% | 0% | 0% | 63% | 36%
go-example-extension-sam-layer0% | 0% | 0% | 69% | 30%
go-example-extension0% | 0% | 0% | 69% | 30%
cache-extension-demo0% | 0% | 0% | 28% | 71%
go-example-ipc-extension0% | 0% | 0% | 41% | 58%
java-example-extension0% | 0% | 0% | 24% | 75%
python-example-elasticsearch-extension0% | 0% | 0% | 13% | 86%
python-example-logs-api-extension0% | 0% | 0% | 14% | 85%
csharp-example-extension0% | 0% | 0% | 0% | 100%
nodejs-example-logs-api-extension0% | 0% | 0% | 0% | 100%
python-example-extension0% | 0% | 0% | 0% | 100%
nodejs-example-extension0% | 0% | 0% | 0% | 100%
awsappconfig-extension-demo0% | 0% | 0% | 0% | 100%
ruby-example-wrapper0% | 0% | 0% | 0% | 100%
python-example-wrapper0% | 0% | 0% | 0% | 100%
bash-example-wrapper0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
func main()
in go-example-logs-api-extension/main.go
71 14 0
func main()
in kinesisfirehose-logs-extension-demo/main.go
71 14 0
func()
in go-example-adaptive-batching-extension/agent/http.go
64 13 1
func main()
in go-example-adaptive-batching-extension/main.go
77 13 0
def run_forever()
in s3-logs-extension-demo-container-image/extension/extensionssrc/extensions/logs_api_http_extension.py
13 11 1
def run_forever()
in s3-logs-extension-demo-zip-archive/extensionssrc/extensions/logs_api_http_extension.py
13 11 1
func GetData()
in cache-extension-demo/plugins/dynamodb.go
51 10 1
func()
in go-example-logs-api-extension/agent/logger.go
29 8 1
func uploadFileToS3()
in go-example-crash-uploader-extension/upload.go
36 8 3
public static void main()
in java-example-extension/src/main/java/example/ExtensionMain.java
29 8 1
func()
in go-example-ipc-extension/extension/client.go
34 7 1
func()
in go-example-extension-sam-layer/go-example-extension/extension/client.go
35 7 1
func()
in go-example-logs-api-extension/extension/client.go
35 7 1
func searchForFilesAndUploadAndDelete()
in go-example-crash-uploader-extension/upload.go
30 7 5
func()
in go-example-crash-uploader-extension/extension/client.go
35 7 1
func processEvents()
in go-example-crash-uploader-extension/main.go
30 7 1
func()
in cache-extension-demo/extension/client.go
34 7 1
func()
in kinesisfirehose-logs-extension-demo/extension/client.go
35 7 1
func()
in go-example-adaptive-batching-extension/extension/client.go
35 7 1
def run_forever()
in python-example-elasticsearch-extension/extensions/logs_api_elasticsearch_extension.py
8 7 1