aws-samples / amazon-kinesis-video-streams-demos
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 304 units with 7,029 lines of code in units (70.1% of code).
    • 0 very complex units (0 lines of code)
    • 5 complex units (732 lines of code)
    • 12 medium complex units (932 lines of code)
    • 37 simple units (1,536 lines of code)
    • 250 very simple units (3,829 lines of code)
0% | 10% | 13% | 21% | 54%
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
c0% | 21% | 22% | 25% | 30%
cpp0% | 8% | 15% | 22% | 53%
java0% | 0% | 0% | 15% | 84%
js0% | 0% | 0% | 32% | 67%
groovy0% | 0% | 0% | 9% | 90%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
gst/gst-kvs-plugin/src0% | 21% | 22% | 25% | 30%
canary/producer-c/canary0% | 25% | 9% | 9% | 56%
canary/webrtc-c/src0% | 0% | 18% | 28% | 52%
canary/consumer-java/src0% | 0% | 0% | 58% | 41%
parser-java/label-detection-web-app/src0% | 0% | 0% | 16% | 83%
producer-js/browser-based-ingestion/src0% | 0% | 0% | 30% | 69%
parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src0% | 0% | 0% | 14% | 85%
parser-java/kvs-archived-media-retrieval-sample/src0% | 0% | 0% | 19% | 80%
canary/webrtc-c/jobs0% | 0% | 0% | 12% | 87%
canary/producer-c/jobs0% | 0% | 0% | 7% | 92%
parser-java/kvs-archived-media-rekognition-label-detection-sample/src0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
VOID gst_kvs_plugin_set_property()
in gst/gst-kvs-plugin/src/GstPlugin.c
152 46 4
VOID gst_kvs_plugin_get_property()
in gst/gst-kvs-plugin/src/GstPlugin.c
132 42 4
GstFlowReturn gst_kvs_plugin_handle_buffer()
in gst/gst-kvs-plugin/src/GstPlugin.c
108 34 4
gboolean gst_kvs_plugin_handle_plugin_event()
in gst/gst-kvs-plugin/src/GstPlugin.c
117 33 4
INT32 main()
in canary/producer-c/canary/KvsProducerSampleCloudwatch.cpp
223 31 2
STATUS Config::initWithJSON()
in canary/webrtc-c/src/Config.cpp
81 25 1
STATUS freeGstKvsWebRtcPlugin()
in gst/gst-kvs-plugin/src/KvsWebRtc.c
96 21 1
STATUS parseConfigFile()
in canary/producer-c/canary/KvsProducerSampleCloudwatch.cpp
79 18 2
STATUS run()
in canary/webrtc-c/src/CanarySignaling.cpp
151 17 1
STATUS identifyCpdNalFormat()
in gst/gst-kvs-plugin/src/KvsProducer.c
25 16 3
STATUS adaptVideoFrameFromAvccToAnnexB()
in gst/gst-kvs-plugin/src/KvsWebRtc.c
57 16 3
STATUS initTrackData()
in gst/gst-kvs-plugin/src/GstPlugin.c
77 15 1
STATUS createWebRtcStreamingSession()
in gst/gst-kvs-plugin/src/KvsWebRtc.c
69 13 4
GstStateChangeReturn gst_kvs_plugin_change_state()
in gst/gst-kvs-plugin/src/GstPlugin.c
67 12 2
STATUS signalingClientMessageReceivedFn()
in gst/gst-kvs-plugin/src/KvsWebRtc.c
89 12 2
STATUS sessionServiceHandler()
in gst/gst-kvs-plugin/src/KvsWebRtc.c
50 12 3
STATUS Peer::initSignaling()
in canary/webrtc-c/src/Peer.cpp
91 12 1
STATUS initKinesisVideoStream()
in gst/gst-kvs-plugin/src/KvsProducer.c
67 10 1
STATUS initKinesisVideoStructs()
in gst/gst-kvs-plugin/src/GstPlugin.c
45 10 1
VOID gst_kvs_plugin_finalize()
in gst/gst-kvs-plugin/src/GstPlugin.c
45 10 1