aws-samples / serverless-patterns
Duplication

Places in code with 6 or more lines that are exactly the same.

Intro
  • For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
  • Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
  • You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
Duplication Overall
  • 25% duplication:
    • 16,048 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 4,047 duplicated lines
  • 750 duplicates
system25% (4,047 lines)
Duplication per Extension
yaml25% (1,684 lines)
ts27% (1,014 lines)
js30% (441 lines)
yml23% (419 lines)
py17% (391 lines)
graphql42% (98 lines)
Duplication per Component (primary)
eventbridge-api-destinations47% (210 lines)
cognito-restapi-vpclink23% (167 lines)
apigw-lambda-qldb47% (155 lines)
appsync-notify-subscribers-of-database-updates23% (115 lines)
cdk-eventbridge-appsync93% (108 lines)
cdk-eventbridge-appsync-oauth43% (105 lines)
apigw-vpclink-pvt-alb50% (101 lines)
apig-waf53% (100 lines)
private-apigw-lambda-cdk63% (90 lines)
apigw-s3-cdk49% (90 lines)
fargate-sns-sqs-cdk52% (86 lines)
fargate-sqs-cdk66% (73 lines)
apigw-to-private-apig-cdk45% (67 lines)
cognito-httpapi50% (67 lines)
appsync-dynamodb-singletable38% (67 lines)
s3-sqs-lambda47% (57 lines)
apigw-rest-api-batch-sam25% (54 lines)
s3-lambda60% (51 lines)
apigw-rest-api-eventbridge-sam51% (48 lines)
apigw-rest-apigw-rest30% (48 lines)
apigw-http-api-lambda64% (48 lines)
apigw-mutualtls-lambda42% (48 lines)
eventbridge-cross-region26% (46 lines)
sfn-log-export16% (45 lines)
fargate-sns-cdk57% (45 lines)
apigw-sfn49% (44 lines)
sfn-sfn41% (43 lines)
cdk-lambda-appsync37% (42 lines)
fargate-eventbridge-cdk48% (41 lines)
sfn-callback-cdk48% (41 lines)
apigw-rest-stepfunction41% (40 lines)
sqs-lambda-cdk-python72% (40 lines)
sqs-lambda-eb-cdk-python29% (40 lines)
appsync-dynamodb-singletable-cdk34% (39 lines)
dynamodb-streams-lambda-event-filters44% (38 lines)
apigw-canary-deployment-cdk27% (37 lines)
fargate-s3-cdk29% (37 lines)
sfn-apigw45% (36 lines)
fargate-sfn-cdk31% (35 lines)
apigw-http-api-lambda-rds-proxy-cdk16% (34 lines)
sfn-lambda54% (34 lines)
cdk-cloudfront-to-s3-and-lambda13% (33 lines)
apigw-websocket-api-sqs-lambda15% (32 lines)
lambda-sns-sms-cdk34% (31 lines)
appsync-direct-lambda-resolver28% (31 lines)
s3-eventbridge25% (31 lines)
appsync-dynamodb18% (31 lines)
sfn-inside-sfn-cdk-python50% (30 lines)
apigw-sqs-lambda23% (28 lines)
apigw-websocket-api-lambda9% (27 lines)
apigw-http-api-lambda-cdk37% (25 lines)
fargate-dynamodb-cdk30% (25 lines)
eventbridge-sqs62% (25 lines)
lambda-rekognition22% (25 lines)
fargate-aurora-serverless-cdk25% (25 lines)
apigw-iam39% (25 lines)
lambda-sfn35% (24 lines)
kinesis-lambda71% (23 lines)
kinesis-lambda-efo62% (23 lines)
lambda-sns-sms45% (23 lines)
apigw-waf-sam19% (23 lines)
sqs-lambda61% (22 lines)
lambda-sns55% (22 lines)
apigw-http-api-lambda-rds-proxy5% (22 lines)
dynamodb-eventbridge16% (22 lines)
lambda-dynamodb-cdk47% (22 lines)
sfn-s343% (21 lines)
sfn-eventbridge31% (21 lines)
cdk-vpc-lambda-sfn13% (21 lines)
eventbridge-sns54% (20 lines)
sfn-glue-sam12% (20 lines)
apigw-lambda-cdk50% (19 lines)
lambda-sns-cdk34% (18 lines)
sns-lambda-cdk48% (18 lines)
lambda-sqs42% (18 lines)
sns-sqs-cdk32% (17 lines)
sfn-sqs-cdk25% (15 lines)
lambda-efs-cdk17% (15 lines)
sfn-dynamodb-cdk19% (15 lines)
ta-eventbridge-lambda-s38% (15 lines)
amplify_cognito_apigateway_lambda_envvariables7% (15 lines)
codecommit-s38% (15 lines)
sfn-dynamodb19% (15 lines)
sfn-sqs30% (15 lines)
lambda-s3-sfn10% (14 lines)
apigw-http-api-eventbridge17% (13 lines)
sfn-sns23% (13 lines)
sns-lambda35% (13 lines)
lambda-dynamodb24% (13 lines)
s3-sqs31% (12 lines)
dynamodb-lambda32% (12 lines)
apigw-lambda-observability4% (12 lines)
s3-eventbridge-direct20% (12 lines)
dynamodb-kinesis50% (11 lines)
eventbridge-sqs-cdk34% (11 lines)
eventbridge-cloudwatch-cdk32% (11 lines)
cdk-appsync-sns17% (10 lines)
cdk-appsync-sqs16% (10 lines)
eventbridge-sns-cdk33% (10 lines)
apigw-eventbridge8% (10 lines)
lambda-ses14% (9 lines)
iot-lambda-cdk15% (8 lines)
eventbridge-lambda-cdk20% (8 lines)
dynamodb-lambda-cdk24% (7 lines)
fargate-cdk17% (7 lines)
apigw-fargate-cdk10% (7 lines)
cdk-codecommit-codepipeline-sfn-athena-glue3% (7 lines)
auroraserverless-secretsmanager12% (7 lines)
s3-lambda-cdk21% (7 lines)
dynamodb-kinesis-cdk35% (7 lines)
eventbridge-scheduled-lambda-cdk-typescript18% (7 lines)
sqs-lambda-cdk15% (7 lines)
apigw-rest-api-dynamodb4% (7 lines)
lambda-ssm-parameter8% (7 lines)
cfn-custom-resource-s3-create4% (7 lines)
msk-lambda16% (7 lines)
msk-lambda-cdk15% (7 lines)
appsync-eventbridge12% (7 lines)
appsync-express-workflow6% (7 lines)
s3-sns16% (6 lines)
sns-sqs13% (6 lines)
eventbridge-scheduled-lambda31% (6 lines)
lambda-s320% (6 lines)
eventbridge-lambda20% (6 lines)
iot-mqttoverhttp-customauth4% (6 lines)
cdk-eventbridge-stepfunction6% (6 lines)
lambda-aurora-serverless3% (6 lines)
eventbridge-cloudwatch0% (0 lines)
apigw-lambda-dynamodb-cdk0% (0 lines)
parallel-e2e-pipeline-cdk0% (0 lines)
iot-lambda0% (0 lines)
s3-sqs-cdk0% (0 lines)
lambda-eventbridge0% (0 lines)
lambda-sqs-cdk0% (0 lines)
rabbitmq-lambda0% (0 lines)
apigw-sns-sqs-lambda-cdk0% (0 lines)
apigw-http-api-eventbridge-dotnet-cdk0% (0 lines)
aurora-serverless-s3-ingestion0% (0 lines)
sfn-comprehend-sdk0% (0 lines)
lambda-cloudwatch-cdk0% (0 lines)
cloudfront-cff-s3-cdk-python0% (0 lines)
xray-lambdalayers-cdk-python0% (0 lines)
_pattern-model0% (0 lines)
eventbridge-sfn0% (0 lines)
lambda-cloudwatch0% (0 lines)
apigw-lambda-dynamodb0% (0 lines)
fargate-secretsmanager0% (0 lines)
lambda-pinpoint0% (0 lines)
apigw-http-api-eventbridge-cdk0% (0 lines)
sqs-lambda-dynamodb-cdk0% (0 lines)
sfn-glue-sync-cdk0% (0 lines)
s3-object-lambda0% (0 lines)
lambda0% (0 lines)
lambda-lambda0% (0 lines)
cloudfront-lambda-edge-cdk-python0% (0 lines)
systems-manager-automation-to-lambda0% (0 lines)
apigw-rest-api-dynamodb-cdk0% (0 lines)

Duplication Between Components (50+ lines)

G cdk-eventbridge-appsync-oauth cdk-eventbridge-appsync-oauth cdk-eventbridge-appsync cdk-eventbridge-appsync cdk-eventbridge-appsync-oauth--cdk-eventbridge-appsync 210 cdk-lambda-appsync cdk-lambda-appsync cdk-eventbridge-appsync-oauth--cdk-lambda-appsync 66 cdk-eventbridge-appsync--cdk-lambda-appsync 84 apigw-vpclink-pvt-alb apigw-vpclink-pvt-alb cognito-restapi-vpclink cognito-restapi-vpclink apigw-vpclink-pvt-alb--cognito-restapi-vpclink 202 fargate-sns-sqs-cdk fargate-sns-sqs-cdk fargate-sqs-cdk fargate-sqs-cdk fargate-sns-sqs-cdk--fargate-sqs-cdk 151 apigw-to-private-apig-cdk apigw-to-private-apig-cdk private-apigw-lambda-cdk private-apigw-lambda-cdk apigw-to-private-apig-cdk--private-apigw-lambda-cdk 134 appsync-notify-subscribers-of-database-updates appsync-notify-subscribers-of-database-updates cognito-httpapi cognito-httpapi appsync-notify-subscribers-of-database-updates--cognito-httpapi 120 s3-lambda s3-lambda s3-sqs-lambda s3-sqs-lambda s3-lambda--s3-sqs-lambda 102 fargate-sns-cdk fargate-sns-cdk fargate-sns-cdk--fargate-sns-sqs-cdk 99 fargate-sns-cdk--fargate-sqs-cdk 76 apigw-http-api-lambda apigw-http-api-lambda apigw-mutualtls-lambda apigw-mutualtls-lambda apigw-http-api-lambda--apigw-mutualtls-lambda 96 apigw-rest-api-batch-sam apigw-rest-api-batch-sam apigw-rest-api-eventbridge-sam apigw-rest-api-eventbridge-sam apigw-rest-api-batch-sam--apigw-rest-api-eventbridge-sam 94 apigw-rest-stepfunction apigw-rest-stepfunction apigw-rest-api-batch-sam--apigw-rest-stepfunction 78 apigw-rest-api-eventbridge-sam--apigw-rest-stepfunction 80 apig-waf apig-waf apig-waf--private-apigw-lambda-cdk 84 fargate-eventbridge-cdk fargate-eventbridge-cdk fargate-eventbridge-cdk--fargate-sns-sqs-cdk 81 fargate-eventbridge-cdk--fargate-sqs-cdk 76 fargate-eventbridge-cdk--fargate-sns-cdk 76 fargate-sfn-cdk fargate-sfn-cdk fargate-eventbridge-cdk--fargate-sfn-cdk 70 sfn-callback-cdk sfn-callback-cdk sqs-lambda-cdk-python sqs-lambda-cdk-python sfn-callback-cdk--sqs-lambda-cdk-python 80 sqs-lambda-eb-cdk-python sqs-lambda-eb-cdk-python sfn-callback-cdk--sqs-lambda-eb-cdk-python 80 sqs-lambda-cdk-python--sqs-lambda-eb-cdk-python 78 fargate-sfn-cdk--fargate-sns-sqs-cdk 69 fargate-sfn-cdk--fargate-sqs-cdk 64 fargate-sfn-cdk--fargate-sns-cdk 64 sfn-apigw sfn-apigw sfn-sfn sfn-sfn sfn-apigw--sfn-sfn 65 sfn-lambda sfn-lambda sfn-apigw--sfn-lambda 52 eventbridge-api-destinations eventbridge-api-destinations sfn-log-export sfn-log-export eventbridge-api-destinations--sfn-log-export 63 appsync-dynamodb-singletable appsync-dynamodb-singletable appsync-dynamodb appsync-dynamodb appsync-dynamodb-singletable--appsync-dynamodb 62 appsync-direct-lambda-resolver appsync-direct-lambda-resolver appsync-direct-lambda-resolver--cdk-eventbridge-appsync 50 appsync-direct-lambda-resolver--cdk-lambda-appsync 50 apigw-canary-deployment-cdk apigw-canary-deployment-cdk apigw-http-api-lambda-cdk apigw-http-api-lambda-cdk apigw-canary-deployment-cdk--apigw-http-api-lambda-cdk 50 fargate-aurora-serverless-cdk fargate-aurora-serverless-cdk fargate-aurora-serverless-cdk--fargate-sqs-cdk 50 fargate-aurora-serverless-cdk--fargate-sns-cdk 50 fargate-aurora-serverless-cdk--fargate-eventbridge-cdk 50 fargate-aurora-serverless-cdk--fargate-sfn-cdk 50

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 20 longest duplicates.
See data for all 750 duplicates...
Size#FoldersFilesLinesCode
54 x 2 cdk-eventbridge-appsync-oauth/cdk/lib
cdk-eventbridge-appsync/cdk/lib
main.ts
main.ts
99:158 (44%)
50:109 (59%)
view
41 x 2 apigw-vpclink-pvt-alb
cognito-restapi-vpclink
template.yml
ecs.yml
128:168 (20%)
162:204 (25%)
view
37 x 2 apigw-to-private-apig-cdk/src/vpc
private-apigw-lambda-cdk/src/vpc
index.ts
index.ts
5:53 (100%)
5:53 (100%)
view
27 x 2 eventbridge-api-destinations/1-webhook-site
eventbridge-api-destinations/2-slack
template.yaml
template.yaml
32:60 (33%)
33:61 (31%)
view
26 x 2 apigw-vpclink-pvt-alb
cognito-restapi-vpclink
template.yml
ecs.yml
92:118 (12%)
123:150 (16%)
view
25 x 2 cdk-eventbridge-appsync/cdk/lib
cdk-lambda-appsync/cdk/lib
schema.graphql
schema.graphql
1:29 (100%)
1:29 (100%)
view
25 x 2 fargate-sns-sqs-cdk/cdk/src/src
fargate-sqs-cdk/cdk/src/src
index.ts
index.ts
31:62 (53%)
29:60 (55%)
view
25 x 2 appsync-direct-lambda-resolver/cdk/lib
cdk-lambda-appsync/cdk/lib
schema.graphql
schema.graphql
1:29 (100%)
1:29 (100%)
view
25 x 2 appsync-direct-lambda-resolver/cdk/lib
cdk-eventbridge-appsync/cdk/lib
schema.graphql
schema.graphql
1:29 (100%)
1:29 (100%)
view
24 x 2 appsync-notify-subscribe...database-updates/1-http
cognito-httpapi
auth.yaml
auth.yaml
13:39 (41%)
20:46 (35%)
view
24 x 2 appsync-dynamodb-singletable
appsync-dynamodb
template.yaml
template.yaml
24:47 (13%)
16:39 (14%)
view
22 x 2 eventbridge-api-destinations/2-slack
eventbridge-api-destinations/4-mongodb
template.yaml
mongoDB.yaml
33:55 (25%)
43:65 (20%)
view
22 x 2 appsync-notify-subscribe...database-updates/1-http
cognito-httpapi
auth.yaml
auth.yaml
45:72 (37%)
55:82 (32%)
view
22 x 2 eventbridge-api-destinations/1-webhook-site
eventbridge-api-destinations/4-mongodb
template.yaml
mongoDB.yaml
32:54 (27%)
43:65 (20%)
view
21 x 2 eventbridge-api-destinations/2-slack
eventbridge-api-destinations/5-zendesk
template.yaml
ZendeskAPIDestination.yaml
33:54 (24%)
38:59 (21%)
view
21 x 2 eventbridge-api-destinations/4-mongodb
eventbridge-api-destinations/5-zendesk
mongoDB.yaml
ZendeskAPIDestination.yaml
43:64 (19%)
38:59 (21%)
view
21 x 2 eventbridge-api-destinations/1-webhook-site
eventbridge-api-destinations/5-zendesk
template.yaml
ZendeskAPIDestination.yaml
32:53 (25%)
38:59 (21%)
view
20 x 2 s3-lambda/src
s3-sqs-lambda/src
app.js
app.js
23:51 (68%)
27:54 (66%)
view
20 x 2 sfn-apigw
sfn-lambda
template.yaml
template.yaml
52:71 (27%)
52:71 (34%)
view
19 x 2 apigw-canary-deployment-cdk/src
apigw-http-api-lambda-cdk/src
index.py
index.py
10:31 (82%)
21:42 (63%)
view
Duplicated Units
The list of top 2 duplicated units.
See data for all 2 unit duplicates...
Size#FoldersFilesLinesCode
40 x 2 apigw-to-private-apig-cdk/src/vpc
private-apigw-lambda-cdk/src/vpc
index.ts
index.ts
8:55 
8:55 
view
17 x 2 appsync-notify-subscribe...se-updates/3-lambda/src
appsync-notify-subscribe...se-updates/3-lambda/src
lambdaUsesApiKey.js
lambdaUsesIAM.js
7:24 
18:35 
view