awslabs / aws-waf-security-automations
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
  • 23% duplication:
    • 2,828 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 672 duplicated lines
  • 113 duplicates
system23% (672 lines)
Duplication per Extension
py23% (672 lines)
Duplication per Component (primary)
log_parser19% (212 lines)
reputation_lists_parser45% (131 lines)
access_handler42% (81 lines)
custom_resource14% (72 lines)
timer90% (60 lines)
helper30% (54 lines)
ip_retention_handler15% (32 lines)
lib9% (30 lines)

Duplication Between Components (50+ lines)

G access_handler access_handler log_parser log_parser access_handler--log_parser 161 reputation_lists_parser reputation_lists_parser access_handler--reputation_lists_parser 86 log_parser--reputation_lists_parser 136 timer timer reputation_lists_parser--timer 110 custom_resource custom_resource custom_resource--reputation_lists_parser 60 custom_resource--timer 78 helper helper custom_resource--helper 92 helper--reputation_lists_parser 90 helper--timer 78

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 113 duplicates...
Size#FoldersFilesLinesCode
32 x 2 source/helper
source/timer
helper.py
timer.py
175:218 (17%)
22:65 (48%)
view
30 x 2 source/custom_resource
source/helper
custom-resource.py
helper.py
397:433 (5%)
175:211 (16%)
view
30 x 2 source/custom_resource
source/timer
custom-resource.py
timer.py
397:433 (5%)
22:58 (45%)
view
30 x 2 source/helper
source/reputation_lists_parser
helper.py
reputation-lists.py
175:211 (16%)
123:159 (10%)
view
30 x 2 source/custom_resource
source/reputation_lists_parser
custom-resource.py
reputation-lists.py
397:433 (5%)
123:159 (10%)
view
30 x 2 source/reputation_lists_parser
source/timer
reputation-lists.py
timer.py
123:159 (10%)
22:58 (45%)
view
21 x 2 source/reputation_lists_parser
source/reputation_lists_parser
reputation-lists.py
reputation-lists.py
213:234 (7%)
247:268 (7%)
view
21 x 2 source/log_parser
source/log_parser
log-parser.py
log-parser.py
368:389 (2%)
402:423 (2%)
view
21 x 2 source/access_handler
source/access_handler
access-handler.py
access-handler.py
60:80 (11%)
93:113 (11%)
view
21 x 2 source/log_parser
source/reputation_lists_parser
log-parser.py
reputation-lists.py
191:212 (2%)
217:239 (7%)
view
21 x 2 source/log_parser
source/log_parser
log-parser.py
log-parser.py
187:207 (2%)
220:241 (2%)
view
17 x 2 source/log_parser
source/reputation_lists_parser
log-parser.py
reputation-lists.py
224:241 (2%)
217:234 (5%)
view
17 x 2 source/log_parser
source/reputation_lists_parser
log-parser.py
reputation-lists.py
224:241 (2%)
251:268 (5%)
view
17 x 2 source/log_parser
source/reputation_lists_parser
log-parser.py
reputation-lists.py
191:207 (2%)
251:268 (5%)
view
16 x 2 source/access_handler
source/reputation_lists_parser
access-handler.py
reputation-lists.py
97:112 (8%)
251:266 (5%)
view
16 x 2 source/access_handler
source/reputation_lists_parser
access-handler.py
reputation-lists.py
97:112 (8%)
217:232 (5%)
view
16 x 2 source/access_handler
source/log_parser
access-handler.py
log-parser.py
64:79 (8%)
191:206 (2%)
view
16 x 2 source/access_handler
source/log_parser
access-handler.py
log-parser.py
97:112 (8%)
224:239 (2%)
view
16 x 2 source/access_handler
source/log_parser
access-handler.py
log-parser.py
64:79 (8%)
224:239 (2%)
view
16 x 2 source/access_handler
source/log_parser
access-handler.py
log-parser.py
97:112 (8%)
191:206 (2%)
view
Duplicated Units
The list of top 3 duplicated units.
See data for all 3 unit duplicates...
Size#FoldersFilesLinesCode
29 x 4 source/timer
source/custom_resource
source/reputation_lists_parser
source/helper
timer.py
custom-resource.py
reputation-lists.py
helper.py
0:0 
0:0 
0:0 
0:0 
view
7 x 2 source/ip_retention_handler
source/ip_retention_handler
set_ip_retention.py
remove_expired_ip.py
0:0 
0:0 
view
6 x 2 source/ip_retention_handler
source/ip_retention_handler
set_ip_retention.py
remove_expired_ip.py
0:0 
0:0 
view