aws / aws-iot-device-sdk-embedded-C
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 187 units with 4,113 lines of code in units (72.0% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (212 lines of code)
    • 10 medium complex units (592 lines of code)
    • 25 simple units (1,038 lines of code)
    • 151 very simple units (2,271 lines of code)
0% | 5% | 14% | 25% | 55%
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% | 5% | 11% | 26% | 56%
py0% | 0% | 47% | 10% | 41%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
platform/posix0% | 5% | 11% | 25% | 56%
tools/release0% | 0% | 43% | 13% | 42%
tools/doxygen0% | 0% | 61% | 0% | 38%
integration-test/custom_test_runner0% | 0% | 0% | 69% | 30%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
static OpensslStatus_t failFunctionFrom_Openssl_Connect()
in platform/posix/transport/utest/openssl_utest.c
212 48 2
def main()
in tools/doxygen/generate_docs.py
40 16 0
OpensslStatus_t Openssl_Connect()
in platform/posix/transport/src/openssl_posix.c
89 16 5
MbedtlsPkcs11Status_t Mbedtls_Pkcs11_Connect()
in platform/posix/transport/src/mbedtls_pkcs11_posix.c
68 16 5
def validate_tags_and_releases()
in tools/release/release-verify.py
23 14 2
SocketStatus_t Sockets_Connect()
in platform/posix/transport/src/sockets_posix.c
92 13 4
int32_t Openssl_Recv()
in platform/posix/transport/src/openssl_posix.c
69 12 3
def validate_checks()
in tools/release/release-verify.py
40 11 1
def set_globals()
in tools/release/release-verify.py
43 11 1
static int32_t privateKeySigningCallback()
in platform/posix/transport/src/mbedtls_pkcs11_posix.c
75 11 7
void test_Sockets_Connect_Fail_setsockopt()
in platform/posix/transport/utest/sockets_utest.c
53 11 1
static int32_t setRootCa()
in platform/posix/transport/src/openssl_posix.c
57 10 2
static OtaPalMainStatus_t Openssl_DigestVerify()
in platform/posix/ota_pal/source/ota_pal_posix.c
65 9 4
def main()
in tools/release/release-verify.py
14 8 0
static OpensslStatus_t tlsHandshake()
in platform/posix/transport/src/openssl_posix.c
45 8 3
static void setOptionalConfigurations()
in platform/posix/transport/src/openssl_posix.c
51 8 2
int32_t Openssl_Send()
in platform/posix/transport/src/openssl_posix.c
52 8 3
static bool readCertificateIntoContext()
in platform/posix/transport/src/mbedtls_pkcs11_posix.c
56 8 3
static bool initializeClientKeys()
in platform/posix/transport/src/mbedtls_pkcs11_posix.c
52 8 2
int32_t Plaintext_Recv()
in platform/posix/transport/src/plaintext_posix.c
46 8 3