awslabs / amazon-s3-glacier-refreezer
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
  • 16% duplication:
    • 3,500 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 564 duplicated lines
  • 36 duplicates
system16% (564 lines)
Duplication per Extension
js21% (429 lines)
ts9% (135 lines)
Duplication per Component (primary)
source/lib9% (135 lines)
source/lambda/calculateTreehash26% (107 lines)
source/lambda/copyToDestinationBucket38% (72 lines)
source/lambda/splitArchive34% (41 lines)
source/lambda/copyChunk14% (34 lines)
source/lambda/requestInventory12% (32 lines)
source/lambda/toLowercase68% (32 lines)
source/lambda/sendAnonymousStats39% (31 lines)
source/lambda/deployGlueJobScript29% (31 lines)
source/lambda/generateUuid62% (31 lines)
source/lambda/calculateMetrics22% (18 lines)
source0% (0 lines)
source/lambda/downloadInventoryPart0% (0 lines)
source/lambda/requestArchives0% (0 lines)
source/lambda/postMetrics0% (0 lines)
source/lambda/downloadInventory0% (0 lines)
deployment/cdk-solution-helper0% (0 lines)

Duplication Between Components (50+ lines)

G source/lambda/calculateTreehash source/lambda/calculateTreehash source/lambda/copyToDestinationBucket source/lambda/copyToDestinationBucket source/lambda/calculateTreehash--source/lambda/copyToDestinationBucket 150 source/lambda/requestInventory source/lambda/requestInventory source/lambda/toLowercase source/lambda/toLowercase source/lambda/requestInventory--source/lambda/toLowercase 64 source/lambda/sendAnonymousStats source/lambda/sendAnonymousStats source/lambda/requestInventory--source/lambda/sendAnonymousStats 60 source/lambda/deployGlueJobScript source/lambda/deployGlueJobScript source/lambda/deployGlueJobScript--source/lambda/requestInventory 62 source/lambda/deployGlueJobScript--source/lambda/toLowercase 62 source/lambda/generateUuid source/lambda/generateUuid source/lambda/deployGlueJobScript--source/lambda/generateUuid 60 source/lambda/deployGlueJobScript--source/lambda/sendAnonymousStats 60 source/lambda/generateUuid--source/lambda/requestInventory 60 source/lambda/generateUuid--source/lambda/toLowercase 60 source/lambda/generateUuid--source/lambda/sendAnonymousStats 62 source/lambda/sendAnonymousStats--source/lambda/toLowercase 60

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 36 duplicates...
Size#FoldersFilesLinesCode
34 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket/lib
db.js
db.js
105:143 (31%)
58:96 (50%)
view
32 x 2 source/lambda/requestInventory/lib
source/lambda/toLowercase/lib
cloudformation.js
cloudformation.js
18:54 (100%)
18:54 (100%)
view
31 x 2 source/lambda/deployGlueJobScript/lib
source/lambda/toLowercase/lib
cloudformation.js
cloudformation.js
18:52 (100%)
20:54 (96%)
view
31 x 2 source/lambda/generateUuid/lib
source/lambda/sendAnonymousStats/lib
cloudformation.js
cloudformation.js
18:52 (100%)
18:52 (100%)
view
31 x 2 source/lambda/deployGlueJobScript/lib
source/lambda/requestInventory/lib
cloudformation.js
cloudformation.js
18:52 (100%)
20:54 (96%)
view
27 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket/lib
db.js
db.js
25:55 (24%)
25:55 (40%)
view
23 x 2 source/lambda/generateUuid/lib
source/lambda/requestInventory/lib
cloudformation.js
cloudformation.js
27:52 (74%)
29:54 (71%)
view
23 x 2 source/lambda/generateUuid/lib
source/lambda/toLowercase/lib
cloudformation.js
cloudformation.js
27:52 (74%)
29:54 (71%)
view
23 x 2 source/lambda/sendAnonymousStats/lib
source/lambda/toLowercase/lib
cloudformation.js
cloudformation.js
27:52 (74%)
29:54 (71%)
view
23 x 2 source/lambda/deployGlueJobScript/lib
source/lambda/generateUuid/lib
cloudformation.js
cloudformation.js
27:52 (74%)
27:52 (74%)
view
23 x 2 source/lambda/copyChunk/lib
source/lambda/splitArchive/lib
db.js
db.js
28:59 (34%)
27:58 (69%)
view
23 x 2 source/lambda/deployGlueJobScript/lib
source/lambda/sendAnonymousStats/lib
cloudformation.js
cloudformation.js
27:52 (74%)
27:52 (74%)
view
23 x 2 source/lambda/requestInventory/lib
source/lambda/sendAnonymousStats/lib
cloudformation.js
cloudformation.js
29:54 (71%)
27:52 (74%)
view
16 x 2 source/lib
source/lib
glue-data-catalog.ts
glue-data-catalog.ts
65:80 (13%)
121:136 (13%)
view
11 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket
trigger.js
index.js
121:134 (12%)
49:62 (31%)
view
11 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyChunk/lib
db.js
db.js
65:75 (10%)
70:80 (16%)
view
9 x 2 source/lambda/calculateMetrics/lib
source/lambda/calculateMetrics/lib
dynamo.js
dynamo.js
51:59 (17%)
69:77 (17%)
view
9 x 2 source/lambda/splitArchive
source/lambda/splitArchive
index.js
index.js
83:91 (10%)
99:107 (10%)
view
9 x 2 source/lambda/calculateTreehash/lib
source/lambda/calculateTreehash/lib
trigger.js
trigger.js
66:74 (9%)
82:90 (9%)
view
8 x 2 source/lib
source/lib
iam-permissions.ts
iam-permissions.ts
66:73 (6%)
105:112 (6%)
view
Duplicated Units
The list of top 10 duplicated units.
See data for all 10 unit duplicates...
Size#FoldersFilesLinesCode
28 x 3 source/lambda/requestInventory/lib
source/lambda/toLowercase/lib
source/lambda/deployGlueJobScript/lib
cloudformation.js
cloudformation.js
cloudformation.js
22:50 
22:50 
20:48 
view
28 x 2 source/lambda/sendAnonymousStats/lib
source/lambda/generateUuid/lib
cloudformation.js
cloudformation.js
20:48 
20:48 
view
18 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket/lib
db.js
db.js
38:56 
38:56 
view
17 x 2 source/lambda/copyChunk/lib
source/lambda/splitArchive/lib
db.js
db.js
43:60 
42:59 
view
16 x 2 source/lambda/calculateMetrics/lib
source/lambda/calculateMetrics/lib
dynamo.js
dynamo.js
44:60 
62:78 
view
16 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket/lib
db.js
db.js
105:122 
58:75 
view
14 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket/lib
db.js
db.js
124:138 
77:91 
view
13 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket
trigger.js
index.js
121:135 
49:63 
view
9 x 2 source/lambda/copyChunk/lib
source/lambda/splitArchive/lib
db.js
db.js
30:39 
29:38 
view
9 x 2 source/lambda/calculateTreehash/lib
source/lambda/copyToDestinationBucket/lib
db.js
db.js
25:34 
25:34 
view