cdklabs / cdk-nag
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
  • 51% duplication:
    • 9,195 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 4,779 duplicated lines
  • 16,921 duplicates
system51% (4,779 lines)
Duplication per Extension
ts51% (4,779 lines)
Duplication per Component (primary)
src/packs60% (2,546 lines)
src/rules/s348% (178 lines)
src/rules/ec248% (167 lines)
src/rules/rds44% (159 lines)
src/rules/redshift54% (150 lines)
src/rules/iam60% (138 lines)
src/rules/elb41% (121 lines)
src/rules/opensearch54% (121 lines)
src/rules/apigw52% (117 lines)
src/rules/cloudfront57% (98 lines)
src/rules/elasticbeanstalk75% (95 lines)
src/rules/documentdb66% (61 lines)
src/rules/neptune64% (59 lines)
src/rules/elasticache37% (50 lines)
src/rules/dynamodb28% (48 lines)
src/rules/autoscaling39% (44 lines)
src/rules/vpc39% (43 lines)
src/rules/msk49% (43 lines)
src/rules/cognito36% (41 lines)
src/rules/codebuild42% (40 lines)
src/rules/mediastore50% (40 lines)
src/rules/sagemaker62% (39 lines)
src/rules/emr79% (38 lines)
src/rules/efs66% (34 lines)
src/rules/kinesis40% (34 lines)
src/rules/ecs33% (29 lines)
src/rules/lambda45% (26 lines)
src8% (26 lines)
src/rules/cloudwatch44% (24 lines)
src/rules/cloudtrail53% (24 lines)
src/rules/secretsmanager21% (21 lines)
src/rules/stepfunctions40% (18 lines)
src/rules/sqs57% (16 lines)
src/rules/dms76% (13 lines)
src/rules/waf30% (12 lines)
src/rules/appsync39% (9 lines)
src/rules/ecr27% (9 lines)
src/rules/kms42% (8 lines)
src/rules/athena12% (8 lines)
src/rules/cloud947% (8 lines)
src/rules/quicksight42% (8 lines)
src/rules/timestream61% (8 lines)
src/rules/sns57% (8 lines)
src/rules0% (0 lines)

Duplication Between Components (50+ lines)

G src/rules/ec2 src/rules/ec2 src/rules/rds src/rules/rds src/rules/ec2--src/rules/rds 238 src/rules/redshift src/rules/redshift src/rules/ec2--src/rules/redshift 212 src/rules/elb src/rules/elb src/rules/ec2--src/rules/elb 195 src/rules/s3 src/rules/s3 src/rules/ec2--src/rules/s3 192 src/rules/iam src/rules/iam src/rules/ec2--src/rules/iam 166 src/rules/opensearch src/rules/opensearch src/rules/ec2--src/rules/opensearch 168 src/rules/elasticache src/rules/elasticache src/rules/ec2--src/rules/elasticache 147 src/rules/efs src/rules/efs src/rules/ec2--src/rules/efs 146 src/rules/rds--src/rules/redshift 222 src/rules/rds--src/rules/s3 202 src/rules/vpc src/rules/vpc src/rules/rds--src/rules/vpc 151 src/rules/redshift--src/rules/s3 204 src/rules/redshift--src/rules/vpc 153 src/rules/elb--src/rules/rds 205 src/rules/elb--src/rules/redshift 207 src/rules/elb--src/rules/s3 187 src/rules/elb--src/rules/iam 161 src/rules/elb--src/rules/opensearch 167 src/rules/apigw src/rules/apigw src/rules/apigw--src/rules/ec2 178 src/rules/apigw--src/rules/rds 188 src/rules/apigw--src/rules/redshift 190 src/rules/apigw--src/rules/elb 177 src/rules/apigw--src/rules/s3 170 src/rules/apigw--src/rules/iam 144 src/rules/iam--src/rules/rds 176 src/rules/iam--src/rules/redshift 178 src/rules/iam--src/rules/s3 158 src/rules/opensearch--src/rules/rds 176 src/rules/opensearch--src/rules/redshift 176 src/rules/opensearch--src/rules/s3 152 src/rules/dynamodb src/rules/dynamodb src/rules/dynamodb--src/rules/ec2 150 src/rules/dynamodb--src/rules/rds 158 src/rules/dynamodb--src/rules/redshift 144 src/rules/elasticache--src/rules/rds 157 src/rules/elasticache--src/rules/redshift 157 src/rules/efs--src/rules/rds 154 src/rules/documentdb src/rules/documentdb src/rules/documentdb--src/rules/rds 152 src/rules/documentdb--src/rules/redshift 148 src/rules/autoscaling src/rules/autoscaling src/rules/autoscaling--src/rules/rds 150 src/rules/autoscaling--src/rules/redshift 148 src/rules/neptune src/rules/neptune src/rules/neptune--src/rules/rds 148 src/rules/neptune--src/rules/redshift 148 src/rules/cognito src/rules/cognito src/rules/cognito--src/rules/rds 148 src/rules/cognito--src/rules/redshift 148 src/rules/elasticbeanstalk src/rules/elasticbeanstalk src/rules/elasticbeanstalk--src/rules/redshift 144 src/rules/codebuild src/rules/codebuild src/rules/codebuild--src/rules/rds 144 src/rules/codebuild--src/rules/redshift 144 src/rules/mediastore src/rules/mediastore src/rules/mediastore--src/rules/rds 144 src/rules/mediastore--src/rules/redshift 144 src/rules/cloudfront src/rules/cloudfront src/rules/cloudfront--src/rules/redshift 144

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 16,921 duplicates...
Size#FoldersFilesLinesCode
24 x 2 src/rules/iam
src/rules/iam
IAMPolicyNoStatementsWithAdminAccess.ts
IAMPolicyNoStatementsWithFullAccess.ts
7:47 (82%)
7:47 (85%)
view
22 x 2 src/rules/s3
src/rules/s3
S3BucketPublicReadProhibited.ts
S3BucketPublicWriteProhibited.ts
14:36 (62%)
14:36 (70%)
view
21 x 2 src/rules/s3
src/rules/s3
S3BucketServerSideEncryptionEnabled.ts
S3DefaultEncryptionKMS.ts
14:37 (63%)
14:37 (70%)
view
20 x 2 src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
94:115 (2%)
74:95 (2%)
view
18 x 2 src/packs
src/packs
hipaa-security.ts
nist-800-53-r5.ts
99:119 (2%)
92:112 (2%)
view
18 x 2 src/rules/documentdb
src/rules/neptune
DocumentDBClusterEncryptionAtRest.ts
NeptuneClusterEncryptionAtRest.ts
14:34 (100%)
14:34 (100%)
view
17 x 2 src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
61:82 (1%)
46:68 (2%)
view
16 x 2 src/packs
src/packs
hipaa-security.ts
nist-800-53-r4.ts
19:39 (1%)
14:34 (2%)
view
16 x 2 src/rules/ec2
src/rules/ec2
EC2RestrictedSSH.ts
EC2RestrictedSSH.ts
36:57 (24%)
64:84 (24%)
view
16 x 2 src/rules/documentdb
src/rules/neptune
DocumentDBClusterBackupRetentionPerio...
NeptuneClusterBackupRetentionPeriod.ts
14:31 (100%)
14:31 (100%)
view
15 x 2 src/packs
src/packs
nist-800-53-r5.ts
pci-dss-321.ts
92:108 (1%)
79:95 (2%)
view
14 x 2 src/packs
src/packs
nist-800-53-r5.ts
pci-dss-321.ts
145:166 (1%)
128:149 (2%)
view
13 x 2 src/rules/dynamodb
src/rules/rds
DynamoDBInBackupPlan.ts
RDSInBackupPlan.ts
28:53 (30%)
27:51 (38%)
view
13 x 2 src/rules/ec2
src/rules/efs
EC2EBSInBackupPlan.ts
EFSInBackupPlan.ts
27:51 (38%)
27:51 (36%)
view
13 x 2 src/rules/elasticbeanstalk
src/rules/elasticbeanstalk
ElasticBeanstalkEC2InstanceLogsToS3.ts
ElasticBeanstalkVPCSpecified.ts
15:28 (46%)
15:28 (46%)
view
13 x 2 src/rules/dynamodb
src/rules/ec2
DynamoDBInBackupPlan.ts
EC2EBSInBackupPlan.ts
28:53 (30%)
27:51 (38%)
view
13 x 2 src/rules/apigw
src/rules/secretsmanager
APIGWAssociatedWithWAF.ts
SecretsManagerRotationEnabled.ts
39:56 (24%)
54:70 (15%)
view
13 x 2 src/rules/efs
src/rules/rds
EFSInBackupPlan.ts
RDSInBackupPlan.ts
27:51 (36%)
27:51 (38%)
view
13 x 2 src/rules/apigw
src/rules/elb
APIGWAssociatedWithWAF.ts
ALBWAFEnabled.ts
41:67 (24%)
29:54 (34%)
view
13 x 2 src/rules/dms
src/rules/rds
DMSReplicationNotPublic.ts
RDSInstancePublicAccess.ts
17:31 (81%)
17:31 (81%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 25 unit duplicates...
Size#FoldersFilesLinesCode
73 x 3 src/packs
src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
878:951 
684:757 
821:894 
view
65 x 2 src/packs
src/packs
nist-800-53-r4.ts
nist-800-53-r5.ts
623:688 
693:758 
view
49 x 2 src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
614:663 
468:517 
view
49 x 2 src/packs
src/packs
hipaa-security.ts
nist-800-53-r5.ts
822:871 
765:814 
view
33 x 3 src/packs
src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
702:735 
556:589 
653:686 
view
33 x 3 src/packs
src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
1030:1063 
828:861 
973:1006 
view
33 x 2 src/packs
src/packs
pci-dss-321.ts
nist-800-53-r5.ts
148:181 
165:198 
view
25 x 4 src/packs
src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
188:213 
238:263 
212:237 
229:254 
view
25 x 3 src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
nist-800-53-r5.ts
220:245 
270:295 
261:286 
view
25 x 3 src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
nist-800-53-r5.ts
292:317 
342:367 
309:334 
view
25 x 4 src/packs
src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
800:825 
958:983 
764:789 
901:926 
view
25 x 2 src/packs
src/packs
hipaa-security.ts
nist-800-53-r5.ts
670:695 
621:646 
view
17 x 3 src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
pci-dss-321.ts
252:269 
302:319 
268:285 
view
17 x 3 src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
nist-800-53-r5.ts
381:399 
462:479 
421:438 
view
17 x 3 src/packs
src/packs
src/packs
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
214:231 
188:205 
205:222 
view
17 x 2 src/packs
src/packs
hipaa-security.ts
nist-800-53-r5.ts
502:519 
461:478 
view
17 x 2 src/packs
src/packs
hipaa-security.ts
nist-800-53-r5.ts
990:1007 
933:950 
view
9 x 4 src/packs
src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
pci-dss-321.ts
nist-800-53-r5.ts
276:285 
326:335 
292:301 
293:302 
view
9 x 3 src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
nist-800-53-r5.ts
406:415 
486:495 
445:454 
view
9 x 3 src/packs
src/packs
src/packs
nist-800-53-r4.ts
hipaa-security.ts
pci-dss-321.ts
495:504 
598:607 
452:461 
view