awslabs / aws-perspective
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
  • 35% duplication:
    • 30,929 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 10,915 duplicated lines
  • 1,140 duplicates
system35% (10,915 lines)
Duplication per Extension
js32% (7,264 lines)
yaml29% (1,802 lines)
css91% (1,711 lines)
graphql36% (124 lines)
py2% (14 lines)
Duplication per Component (primary)
source/frontend/src/components46% (4,941 lines)
source/cfn/templates31% (1,464 lines)
source/frontend/src/API44% (1,029 lines)
source/frontend/src70% (873 lines)
source/frontend/src/css90% (856 lines)
source/backend/discovery/src11% (481 lines)
source/backend/functions/api30% (358 lines)
deployment23% (338 lines)
source/backend/functions/graph-api43% (124 lines)
source/backend/graphql/schema36% (124 lines)
source/frontend/src/Utils7% (120 lines)
source/backend/functions/settings22% (66 lines)
source/backend/functions/setup11% (62 lines)
source/backend/functions/cost-parser13% (45 lines)
source/backend/functions/search14% (20 lines)
source/backend/functions/cleanup-ecr35% (7 lines)
source/backend/functions/cleanup-bucket20% (7 lines)
source/frontend/src/config0% (0 lines)
source/frontend/public0% (0 lines)
source/frontend0% (0 lines)
source/backend/discovery0% (0 lines)
source/backend/discovery/sandbox0% (0 lines)
source/backend/functions/drawio0% (0 lines)
source/backend/functions/secured-edge0% (0 lines)
source/backend/functions/cur-setup0% (0 lines)
source/backend/functions/lambda-layers0% (0 lines)

Duplication Between Components (50+ lines)

G source/frontend/src/css source/frontend/src/css source/frontend/src source/frontend/src source/frontend/src/css--source/frontend/src 1711 deployment deployment source/cfn/templates source/cfn/templates deployment--source/cfn/templates 675 source/backend/discovery/src source/backend/discovery/src source/backend/functions/api source/backend/functions/api source/backend/discovery/src--source/backend/functions/api 354 source/backend/functions/graph-api source/backend/functions/graph-api source/backend/functions/api--source/backend/functions/graph-api 248 source/frontend/src/API source/frontend/src/API source/frontend/src/components source/frontend/src/components source/frontend/src/API--source/frontend/src/components 132 source/frontend/src/Utils source/frontend/src/Utils source/frontend/src/Utils--source/frontend/src/components 110

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 1,140 duplicates...
Size#FoldersFilesLinesCode
468 x 2 source/frontend/src/css
source/frontend/src
App.css
index.css
403:1046 (49%)
383:1026 (51%)
view
135 x 2 source/frontend/src/css
source/frontend/src
App.css
index.css
1049:1209 (14%)
1029:1189 (14%)
view
126 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportForm.js
AccountImportStackSetsForm.js
51:193 (52%)
53:195 (51%)
view
125 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportBody.js
AccountImportStackSetsBody.js
3:147 (82%)
3:147 (85%)
view
109 x 2 source/backend/functions/api/src
source/backend/functions/graph-api/src
hierarchy.js
hierarchy.js
23:200 (94%)
22:199 (95%)
view
103 x 2 source/frontend/src/css
source/frontend/src
App.css
index.css
123:246 (10%)
121:244 (11%)
view
95 x 2 source/frontend/src/css
source/frontend/src
App.css
index.css
249:381 (9%)
251:383 (10%)
view
88 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportReview.js
AccountImportStackSetsReview.js
3:106 (100%)
3:106 (100%)
view
77 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportTable.js
AccountImportStackSetsTable.js
16:96 (97%)
16:96 (97%)
view
77 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportWizard.js
AccountImportStackSetsWizard.js
23:109 (42%)
23:109 (42%)
view
76 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportWizard.js
AccountImportStackSetsWizard.js
114:197 (41%)
114:196 (41%)
view
74 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportForm.js
AccountImportStackSetsForm.js
196:270 (30%)
201:275 (30%)
view
72 x 2 source/frontend/src/API/...rontDistributionDetails
source/frontend/src/API/...DatabaseInstanceDetails
CloudFrontDistributionDetail.js
DatabaseInstanceDetail.js
7:95 (100%)
7:94 (100%)
view
71 x 2 source/frontend/src/API/...nstance/InstanceDetails
source/frontend/src/API/...3Bucket/S3BucketDetails
InstanceDetail.js
S3BucketDetails.js
7:87 (100%)
7:87 (100%)
view
62 x 2 source/backend/discovery/src/discovery
source/backend/functions/api/src
aws-sigv4-driver-remote-connection.js
aws-sigv4-driver-remote-connection.js
52:140 (31%)
8:96 (37%)
view
61 x 2 deployment
source/cfn/templates
perspective-setup.yaml
perspective-opensearch.yaml
78:138 (4%)
44:104 (22%)
view
59 x 2 source/frontend/src/comp...countManagement/Account
source/frontend/src/components/LandingPage
AccountImportForm.js
GettingStartedImportForm.js
174:235 (14%)
175:236 (17%)
view
57 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportDeploy.js
AccountImportStackSetsDeploy.js
30:93 (63%)
39:103 (57%)
view
51 x 2 source/frontend/src/components/Graph
source/frontend/src/components/Graph/Remove
DeleteDialog.js
DeleteDialog.js
29:84 (57%)
28:82 (56%)
view
48 x 2 source/frontend/src/css
source/frontend/src
App.css
index.css
54:121 (5%)
52:119 (5%)
view
Duplicated Units
The list of top 19 duplicated units.
See data for all 19 unit duplicates...
Size#FoldersFilesLinesCode
42 x 2 source/backend/discovery/src/discovery
source/backend/functions/api/src
aws-sigv4-driver-remote-connection.js
aws-sigv4-driver-remote-connection.js
58:107 
14:63 
view
23 x 2 source/backend/discovery/src/discovery
source/backend/functions/api/src
aws-sigv4-driver-remote-connection.js
aws-sigv4-driver-remote-connection.js
112:141 
68:97 
view
19 x 2 source/frontend/src/API/GraphQL
source/frontend/src/API/GraphQL
queries.js
queries.js
110:129 
134:153 
view
12 x 4 source/frontend/src/API/...3Bucket/S3BucketDetails
source/frontend/src/API/...nstance/InstanceDetails
source/frontend/src/API/...rontDistributionDetails
source/frontend/src/API/...DatabaseInstanceDetails
S3BucketDetails.js
InstanceDetail.js
CloudFrontDistributionDetail.js
DatabaseInstanceDetail.js
42:61 
42:61 
49:69 
49:68 
view
18 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportBody.js
AccountImportStackSetsBody.js
51:69 
51:69 
view
18 x 5 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
lamdbda-links.js
taskDefinition-links.js
eni-links.js
load-balancer.js
load-balancer-v2.js
236:255 
137:156 
255:274 
32:51 
40:59 
view
17 x 2 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
userPolicies.js
policyAccountAuthorizationDetails.js
39:57 
59:77 
view
12 x 2 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
autoScalingGroups.js
routeTables.js
68:81 
74:87 
view
9 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportDeploy.js
AccountImportStackSetsDeploy.js
10:19 
19:28 
view
9 x 2 source/frontend/src/comp...countManagement/Account
source/frontend/src/comp...countManagement/Account
DiscoverableAccountsAndRegionsTable.js
AccountAndRegionSettings.js
34:43 
69:78 
view
9 x 6 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
autoScalingGroups.js
lamdbda-links.js
taskDefinition-links.js
eni-links.js
load-balancer.js
load-balancer-v2.js
56:66 
290:300 
170:180 
288:298 
60:70 
187:197 
view
9 x 3 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
userPolicies.js
roleAccountAuthorizationDetails.js
policyAccountAuthorizationDetails.js
65:75 
54:64 
47:57 
view
8 x 3 source/frontend/src/API/GraphQL
source/frontend/src/API/GraphQL
source/frontend/src/API/GraphQL
mutations.js
mutations.js
queries.js
30:38 
43:51 
84:92 
view
7 x 2 source/frontend/src/comp.../Account/CloudFormation
source/frontend/src/comp...ement/Account/StackSets
AccountImportReview.js
AccountImportStackSetsReview.js
45:52 
45:52 
view
7 x 2 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
lamdbda-links.js
taskDefinition-links.js
213:220 
128:135 
view
6 x 2 source/frontend/src/components/Graph
source/frontend/src/components/Graph
Cytoscape.js
Cytoscape.js
291:297 
343:349 
view
6 x 2 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
lamdbda-links.js
taskDefinition-links.js
36:44 
38:46 
view
6 x 2 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
lamdbda-links.js
taskDefinition-links.js
46:54 
48:56 
view
6 x 2 source/backend/discovery/src/discovery
source/backend/discovery/src/discovery
load-balancer.js
load-balancer-v2.js
127:134 
307:314 
view