aws-samples / aws-lambda-extensions
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
  • 54% duplication:
    • 4,909 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 2,699 duplicated lines
  • 557 duplicates
system54% (2,699 lines)
Duplication per Extension
go64% (1,727 lines)
py83% (616 lines)
js40% (144 lines)
yaml19% (114 lines)
yml29% (66 lines)
java28% (32 lines)
Duplication per Component (primary)
go-example-logs-api-extension67% (404 lines)
kinesisfirehose-logs-extension-demo64% (365 lines)
go-example-adaptive-batching-extension53% (359 lines)
s3-logs-extension-demo-zip-archive80% (182 lines)
go-example-extension-sam-layer80% (173 lines)
go-example-extension100% (167 lines)
s3-logs-extension-demo-container-image56% (166 lines)
python-example-logs-api-extension78% (162 lines)
python-example-elasticsearch-extension85% (156 lines)
go-example-crash-uploader-extension45% (148 lines)
go-example-ipc-extension82% (119 lines)
cache-extension-demo18% (92 lines)
nodejs-example-logs-api-extension33% (81 lines)
nodejs-example-extension75% (49 lines)
awsappconfig-extension-demo28% (44 lines)
java-example-extension28% (32 lines)
python-example-extension0% (0 lines)
csharp-example-extension0% (0 lines)
python-example-wrapper0% (0 lines)
bash-example-wrapper0% (0 lines)
ruby-example-wrapper0% (0 lines)
custom-runtime-extension-demo0% (0 lines)

Duplication Between Components (50+ lines)

G go-example-logs-api-extension go-example-logs-api-extension kinesisfirehose-logs-extension-demo kinesisfirehose-logs-extension-demo go-example-logs-api-extension--kinesisfirehose-logs-extension-demo 730 nodejs-example-logs-api-extension nodejs-example-logs-api-extension go-example-logs-api-extension--nodejs-example-logs-api-extension 52 go-example-adaptive-batching-extension go-example-adaptive-batching-extension go-example-adaptive-batching-extension--go-example-logs-api-extension 719 go-example-adaptive-batching-extension--kinesisfirehose-logs-extension-demo 631 go-example-extension-sam-layer go-example-extension-sam-layer go-example-adaptive-batching-extension--go-example-extension-sam-layer 262 go-example-extension go-example-extension go-example-adaptive-batching-extension--go-example-extension 250 go-example-crash-uploader-extension go-example-crash-uploader-extension go-example-adaptive-batching-extension--go-example-crash-uploader-extension 250 go-example-ipc-extension go-example-ipc-extension go-example-adaptive-batching-extension--go-example-ipc-extension 170 go-example-extension-sam-layer--go-example-logs-api-extension 262 go-example-extension-sam-layer--kinesisfirehose-logs-extension-demo 250 go-example-extension-sam-layer--go-example-extension 334 go-example-extension-sam-layer--go-example-ipc-extension 256 go-example-extension--go-example-logs-api-extension 250 go-example-extension--kinesisfirehose-logs-extension-demo 250 go-example-extension--go-example-ipc-extension 256 s3-logs-extension-demo-container-image s3-logs-extension-demo-container-image s3-logs-extension-demo-zip-archive s3-logs-extension-demo-zip-archive s3-logs-extension-demo-container-image--s3-logs-extension-demo-zip-archive 332 python-example-elasticsearch-extension python-example-elasticsearch-extension python-example-elasticsearch-extension--s3-logs-extension-demo-container-image 136 python-example-elasticsearch-extension--s3-logs-extension-demo-zip-archive 174 python-example-logs-api-extension python-example-logs-api-extension python-example-elasticsearch-extension--python-example-logs-api-extension 312 python-example-logs-api-extension--s3-logs-extension-demo-container-image 152 python-example-logs-api-extension--s3-logs-extension-demo-zip-archive 190 go-example-crash-uploader-extension--go-example-logs-api-extension 250 go-example-crash-uploader-extension--kinesisfirehose-logs-extension-demo 250 go-example-crash-uploader-extension--go-example-extension-sam-layer 296 go-example-crash-uploader-extension--go-example-extension 296 go-example-crash-uploader-extension--go-example-ipc-extension 218 go-example-ipc-extension--go-example-logs-api-extension 170 go-example-ipc-extension--kinesisfirehose-logs-extension-demo 170 cache-extension-demo cache-extension-demo cache-extension-demo--go-example-logs-api-extension 170 cache-extension-demo--kinesisfirehose-logs-extension-demo 170 cache-extension-demo--go-example-adaptive-batching-extension 170 cache-extension-demo--go-example-extension-sam-layer 202 cache-extension-demo--go-example-extension 202 cache-extension-demo--go-example-crash-uploader-extension 188 cache-extension-demo--go-example-ipc-extension 184 nodejs-example-extension nodejs-example-extension nodejs-example-extension--nodejs-example-logs-api-extension 98

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 557 duplicates...
Size#FoldersFilesLinesCode
125 x 2 go-example-extension-sam...ple-extension/extension
go-example-extension/extension
client.go
client.go
16:200 (100%)
16:200 (100%)
view
125 x 2 go-example-crash-uploader-extension/extension
go-example-extension/extension
client.go
client.go
16:200 (100%)
16:200 (100%)
view
125 x 2 go-example-crash-uploader-extension/extension
go-example-extension-sam...ple-extension/extension
client.go
client.go
16:200 (100%)
16:200 (100%)
view
125 x 2 go-example-logs-api-extension/extension
kinesisfirehose-logs-extension-demo/extension
client.go
client.go
16:200 (100%)
16:200 (100%)
view
93 x 2 go-example-logs-api-extension/logsapi
kinesisfirehose-logs-extension-demo/logsapi
client.go
client.go
16:174 (100%)
16:174 (100%)
view
77 x 2 cache-extension-demo/extension
go-example-ipc-extension/extension
client.go
client.go
16:131 (100%)
16:131 (100%)
view
66 x 2 go-example-adaptive-batching-extension/extension
go-example-logs-api-extension/extension
client.go
client.go
108:200 (52%)
108:200 (52%)
view
66 x 2 go-example-adaptive-batching-extension/extension
kinesisfirehose-logs-extension-demo/extension
client.go
client.go
108:200 (52%)
108:200 (52%)
view
58 x 2 go-example-adaptive-batching-extension/extension
kinesisfirehose-logs-extension-demo/extension
client.go
client.go
16:106 (46%)
16:106 (46%)
view
58 x 2 go-example-adaptive-batching-extension/extension
go-example-logs-api-extension/extension
client.go
client.go
16:106 (46%)
16:106 (46%)
view
48 x 2 s3-logs-extension-demo-c...xtensionssrc/extensions
s3-logs-extension-demo-z...xtensionssrc/extensions
logs_api_http_extension.py
logs_api_http_extension.py
5:134 (100%)
5:134 (100%)
view
45 x 2 python-example-elasticse...elasticsearch_extension
python-example-logs-api-...logs_api_http_extension
http_listener.py
http_listener.py
13:71 (100%)
13:71 (100%)
view
44 x 2 s3-logs-extension-demo-c...logs_api_http_extension
s3-logs-extension-demo-z...logs_api_http_extension
extensions_api_client.py
extensions_api_client.py
11:63 (100%)
11:63 (100%)
view
43 x 2 python-example-elasticse...elasticsearch_extension
python-example-logs-api-...logs_api_http_extension
extensions_api_client.py
extensions_api_client.py
12:62 (100%)
12:62 (100%)
view
42 x 2 go-example-extension-sam...er/go-example-extension
go-example-extension
main.go
main.go
18:75 (100%)
18:75 (100%)
view
40 x 2 go-example-logs-api-extension
kinesisfirehose-logs-extension-demo
main.go
main.go
50:111 (67%)
50:111 (67%)
view
36 x 2 go-example-extension/extension
go-example-ipc-extension/extension
client.go
client.go
55:106 (28%)
49:100 (46%)
view
36 x 2 go-example-extension-sam...ple-extension/extension
go-example-ipc-extension/extension
client.go
client.go
55:106 (28%)
49:100 (46%)
view
36 x 2 cache-extension-demo/extension
go-example-extension-sam...ple-extension/extension
client.go
client.go
49:100 (46%)
55:106 (28%)
view
36 x 2 cache-extension-demo/extension
go-example-extension/extension
client.go
client.go
49:100 (46%)
55:106 (28%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 32 unit duplicates...
Size#FoldersFilesLinesCode
34 x 3 go-example-extension-sam...ple-extension/extension
go-example-crash-uploader-extension/extension
go-example-extension/extension
client.go
client.go
client.go
74:109 
74:109 
74:109 
view
34 x 3 go-example-logs-api-extension/extension
kinesisfirehose-logs-extension-demo/extension
go-example-adaptive-batching-extension/extension
client.go
client.go
client.go
74:109 
74:109 
74:109 
view
33 x 2 go-example-ipc-extension/extension
cache-extension-demo/extension
client.go
client.go
68:102 
68:102 
view
30 x 2 go-example-logs-api-extension/logsapi
kinesisfirehose-logs-extension-demo/logsapi
client.go
client.go
117:153 
117:153 
view
27 x 7 go-example-extension-sam...ple-extension/extension
go-example-extension-sam...ple-extension/extension
go-example-logs-api-extension/extension
go-example-crash-uploader-extension/extension
kinesisfirehose-logs-extension-demo/extension
go-example-adaptive-batching-extension/extension
go-example-extension/extension
client.go
client.go
client.go
client.go
client.go
client.go
client.go
142:170 
173:201 
142:170 
142:170 
142:170 
142:170 
142:170 
view
27 x 6 go-example-logs-api-extension/extension
go-example-extension-sam...ple-extension/extension
go-example-crash-uploader-extension/extension
kinesisfirehose-logs-extension-demo/extension
go-example-adaptive-batching-extension/extension
go-example-extension/extension
client.go
client.go
client.go
client.go
client.go
client.go
142:170 
142:170 
142:170 
142:170 
142:170 
142:170 
view
26 x 8 go-example-ipc-extension/extension
go-example-extension-sam...ple-extension/extension
go-example-logs-api-extension/extension
go-example-crash-uploader-extension/extension
cache-extension-demo/extension
kinesisfirehose-logs-extension-demo/extension
go-example-adaptive-batching-extension/extension
go-example-extension/extension
client.go
client.go
client.go
client.go
client.go
client.go
client.go
client.go
105:132 
112:139 
112:139 
112:139 
105:132 
112:139 
112:139 
112:139 
view
26 x 8 go-example-logs-api-extension/extension
go-example-ipc-extension/extension
go-example-extension-sam...ple-extension/extension
go-example-crash-uploader-extension/extension
cache-extension-demo/extension
kinesisfirehose-logs-extension-demo/extension
go-example-adaptive-batching-extension/extension
go-example-extension/extension
client.go
client.go
client.go
client.go
client.go
client.go
client.go
client.go
112:139 
105:132 
112:139 
112:139 
105:132 
112:139 
112:139 
112:139 
view
21 x 3 go-example-ipc-extension
go-example-extension-sam...er/go-example-extension
go-example-extension
main.go
main.go
main.go
54:77 
46:68 
46:68 
view
21 x 2 java-example-extension/src/main/java/example
java-example-extension/src/main/java/example
ExtensionClient.java
ExtensionClient.java
92:114 
122:144 
view
20 x 2 s3-logs-extension-demo-c...logs_api_http_extension
s3-logs-extension-demo-z...logs_api_http_extension
extensions_api_client.py
extensions_api_client.py
0:0 
0:0 
view
18 x 2 nodejs-example-logs-api-...mple-logs-api-extension
nodejs-example-extension/nodejs-example-extension
extensions-api.js
extensions-api.js
6:28 
6:26 
view
19 x 2 python-example-logs-api-...logs_api_http_extension
python-example-elasticse...elasticsearch_extension
logs_api_client.py
logs_api_client.py
0:0 
0:0 
view
19 x 2 python-example-logs-api-...logs_api_http_extension
python-example-elasticse...elasticsearch_extension
extensions_api_client.py
extensions_api_client.py
0:0 
0:0 
view
17 x 3 go-example-logs-api-extension/logsapi
kinesisfirehose-logs-extension-demo/logsapi
go-example-adaptive-batching-extension/logsapi
client.go
client.go
client.go
155:175 
155:175 
139:159 
view
16 x 2 go-example-extension-sam...er/go-example-extension
go-example-extension
main.go
main.go
24:44 
24:44 
view
16 x 2 s3-logs-extension-demo-c...logs_api_http_extension
s3-logs-extension-demo-z...logs_api_http_extension
extensions_api_client.py
extensions_api_client.py
0:0 
0:0 
view
15 x 3 go-example-logs-api-extension/agent
kinesisfirehose-logs-extension-demo/agent
go-example-adaptive-batching-extension/agent
http.go
http.go
http.go
49:64 
50:65 
52:67 
view
15 x 2 python-example-logs-api-...logs_api_http_extension
python-example-elasticse...elasticsearch_extension
extensions_api_client.py
extensions_api_client.py
0:0 
0:0 
view
13 x 4 s3-logs-extension-demo-c...logs_api_http_extension
python-example-logs-api-...logs_api_http_extension
python-example-elasticse...elasticsearch_extension
s3-logs-extension-demo-z...logs_api_http_extension
http_listener.py
http_listener.py
http_listener.py
http_listener.py
0:0 
0:0 
0:0 
0:0 
view