awslabs / aws-saas-boost
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 1,081 units with 16,621 lines of code in units (42.5% of code).
    • 1 very complex units (29 lines of code)
    • 7 complex units (1,065 lines of code)
    • 28 medium complex units (2,329 lines of code)
    • 77 simple units (3,219 lines of code)
    • 968 very simple units (9,979 lines of code)
<1% | 6% | 14% | 19% | 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
java<1% | 8% | 16% | 22% | 52%
js0% | 0% | 5% | 11% | 83%
py0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
services/settings-service1% | 2% | 12% | 27% | 56%
services/onboarding-service0% | 44% | 14% | 13% | 27%
functions/onboarding-notification0% | 72% | 0% | 7% | 20%
services/tenant-service0% | 11% | 14% | 8% | 65%
resources/custom-resources0% | 0% | 45% | 10% | 44%
installer/src0% | 0% | 28% | 26% | 44%
client/web0% | 0% | 5% | 11% | 83%
services/metric-service0% | 0% | 13% | 41% | 45%
functions/ecs-deploy0% | 0% | 38% | 25% | 36%
metering-billing/lambdas0% | 0% | 5% | 25% | 68%
functions/ecs-startup-services0% | 0% | 50% | 20% | 28%
layers/utils0% | 0% | 27% | 0% | 72%
functions/alb-update0% | 0% | 0% | 79% | 20%
services/user-service0% | 0% | 0% | 11% | 88%
services/quotas-service0% | 0% | 0% | 23% | 76%
functions/ecs-shutdown-services0% | 0% | 0% | 100% | 0%
functions/ecs-service-update0% | 0% | 0% | 64% | 35%
layers/apigw-helper0% | 0% | 0% | 20% | 79%
metrics-analytics/metrics-java-sdk0% | 0% | 0% | 10% | 89%
metrics-analytics/deploy0% | 0% | 0% | 0% | 100%
functions/system-rest-api-client0% | 0% | 0% | 0% | 100%
metrics-analytics/metrics-generator0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public boolean equals()
in services/settings-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/AppConfig.java
29 57 1
public Object handleRequest()
in functions/onboarding-notification/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/OnboardingNotification.java
221 47 2
public APIGatewayProxyResponseEvent provisionTenant()
in services/onboarding-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/OnboardingService.java
351 46 2
public APIGatewayProxyResponseEvent startOnboarding()
in services/onboarding-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/OnboardingService.java
202 31 2
public APIGatewayProxyResponseEvent statusEventListener()
in services/onboarding-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/OnboardingService.java
143 31 2
public boolean equals()
in services/settings-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/Database.java
22 29 1
public static Tenant fromAttributeValueMap()
in services/tenant-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/TenantServiceDAL.java
106 27 1
public boolean equals()
in services/settings-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/FsxFilesystem.java
20 27 1
export function ApplicationComponent()
in client/web/src/settings/ApplicationComponent.js
226 25 1
public boolean equals()
in services/settings-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/Setting.java
20 21 1
public APIGatewayProxyResponseEvent updateAppConfig()
in services/settings-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/SettingsService.java
101 21 2
public Object handleRequest()
in resources/custom-resources/rds-options/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/RdsOptions.java
140 20 2
public Object handleRequest()
in resources/custom-resources/rds-bootstrap/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/RdsBootstrap.java
115 20 2
public List queryMetrics()
in services/metric-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/MetricServiceDAL.java
119 19 1
public boolean equals()
in services/settings-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/SharedFilesystem.java
18 19 1
public Object handleRequest()
in resources/custom-resources/redshift-table/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/RedshiftTable.java
122 18 2
public Object handleRequest()
in functions/ecs-deploy/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/EcsDeploy.java
78 16 2
public Object handleRequest()
in resources/custom-resources/clear-s3-bucket/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/ClearS3Bucket.java
123 16 2
public static Map toAttributeValueMap()
in services/tenant-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/TenantServiceDAL.java
54 16 1
protected static boolean validateTenantOverrides()
in services/onboarding-service/src/main/java/com/amazon/aws/partners/saasfactory/saasboost/OnboardingService.java
22 16 5