aws / aws-sdk-java-v2
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 11,801 units with 66,953 lines of code in units (64.7% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (77 lines of code)
    • 43 medium complex units (1,622 lines of code)
    • 214 simple units (4,975 lines of code)
    • 11,543 very simple units (60,279 lines of code)
0% | <1% | 2% | 7% | 90%
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
java0% | <1% | 2% | 7% | 90%
py0% | 0% | 0% | 4% | 95%
js0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
utils0% | 3% | 0% | 9% | 87%
codegen0% | 0% | 3% | 8% | 87%
services-custom0% | 0% | 2% | 8% | 88%
services0% | 0% | 5% | 6% | 87%
core0% | 0% | 1% | 5% | 92%
http-clients0% | 0% | 1% | 8% | 89%
build-tools0% | 0% | 22% | 13% | 64%
metric-publishers0% | 0% | 0% | 11% | 88%
codegen-lite0% | 0% | 0% | 2% | 97%
http-client-spi0% | 0% | 0% | 3% | 96%
scripts0% | 0% | 0% | 4% | 95%
release-scripts0% | 0% | 0% | 0% | 100%
codegen-lite-maven-plugin0% | 0% | 0% | 0% | 100%
codegen-maven-plugin0% | 0% | 0% | 0% | 100%
archetypes0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
public static String replaceEach()
in utils/src/main/java/software/amazon/awssdk/utils/StringUtils.java
77 28 3
public TypeName typeName()
in codegen/src/main/java/software/amazon/awssdk/codegen/poet/model/TypeProvider.java
46 25 2
public static boolean isValidDnsBucketName()
in services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/BucketUtils.java
83 25 2
public boolean equals()
in services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/EnhancedAttributeValue.java
41 23 1
public SdkResponse modifyResponse()
in services/route53/src/main/java/software/amazon/awssdk/services/route53/internal/Route53IdInterceptor.java
111 20 2
public void visit()
in codegen/src/main/java/software/amazon/awssdk/codegen/jmespath/component/Expression.java
37 17 1
public boolean equals()
in services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ScanEnhancedRequest.java
30 17 1
public boolean equals()
in services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryEnhancedRequest.java
32 17 1
private static Optional parseProfileDefinition()
in core/profiles/src/main/java/software/amazon/awssdk/profiles/internal/ProfileFileReader.java
44 16 2
private CodeBlock traits()
in codegen/src/main/java/software/amazon/awssdk/codegen/poet/model/ShapeModelSpec.java
39 14 1
private String copyMethodBody()
in codegen/src/main/java/software/amazon/awssdk/codegen/poet/model/MemberCopierSpec.java
92 14 6
private Optional credentialsProvider()
in core/auth/src/main/java/software/amazon/awssdk/auth/credentials/internal/ProfileCredentialsUtils.java
32 14 1
public void preprocess()
in codegen/src/main/java/software/amazon/awssdk/codegen/customization/processors/RenameShapesProcessor.java
44 13 1
public boolean equals()
in services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbAsyncIndex.java
23 13 1
public boolean equals()
in services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbIndex.java
22 13 1
private SdkHttpFullRequest finishMarshalling()
in core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/marshall/JsonProtocolMarshaller.java
31 13 0
public boolean equals()
in core/protocols/aws-xml-protocol/src/main/java/software/amazon/awssdk/protocols/xml/internal/unmarshall/AwsXmlUnmarshallingContext.java
25 13 1
public SdkRequest modifyRequest()
in services/machinelearning/src/main/java/software/amazon/awssdk/services/machinelearning/internal/RandomIdInterceptor.java
44 13 2
public boolean equals()
in http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/ProxyConfiguration.java
25 13 1
private ParseResult parseEscapedChar()
in codegen/src/main/java/software/amazon/awssdk/codegen/jmespath/parser/JmesPathParser.java
28 12 2