aws-samples / aws-greengrass-mini-fulfillment
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
  • 48% duplication:
    • 5,865 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 2,862 duplicated lines
  • 112 duplicates
system48% (2,862 lines)
Duplication per Extension
py53% (2,862 lines)
Duplication per Component (primary)
groups/master/ggd/servo99% (981 lines)
groups/arm/ggd/servo99% (981 lines)
groups/master/ggd34% (392 lines)
groups/arm/ggd29% (378 lines)
groups9% (74 lines)
groups/lambda/ArmErrorDetector100% (19 lines)
groups/lambda/MasterErrorDetector100% (19 lines)
groups/lambda/MasterBrain12% (18 lines)
groups/master0% (0 lines)
groups/master/ggd/flask0% (0 lines)
groups/arm0% (0 lines)

Duplication Between Components (50+ lines)

G groups/arm/ggd/servo groups/arm/ggd/servo groups/master/ggd/servo groups/master/ggd/servo groups/arm/ggd/servo--groups/master/ggd/servo 1962 groups/arm/ggd groups/arm/ggd groups/master/ggd groups/master/ggd groups/arm/ggd--groups/master/ggd 687

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 112 duplicates...
Size#FoldersFilesLinesCode
882 x 2 groups/arm/ggd/servo
groups/master/ggd/servo
servode.py
servode.py
13:1192 (100%)
13:1192 (100%)
view
150 x 2 groups/arm/ggd
groups/master/ggd
utils.py
utils.py
20:231 (100%)
20:231 (100%)
view
111 x 2 groups/arm/ggd
groups/master/ggd
heartbeat.py
heartbeat.py
36:179 (100%)
36:179 (100%)
view
69 x 2 groups/arm/ggd/servo
groups/master/ggd/servo
hello_example.py
hello_example.py
5:99 (100%)
5:99 (100%)
view
30 x 2 groups/arm/ggd/servo
groups/master/ggd/servo
setup.py
setup.py
11:42 (100%)
11:42 (100%)
view
19 x 2 groups/lambda/ArmErrorDetector
groups/lambda/MasterErrorDetector
error_detector.py
error_detector.py
18:44 (100%)
18:44 (100%)
view
17 x 2 groups/arm/ggd
groups/arm/ggd
heartbeat.py
man_heartbeat.py
123:140 (15%)
66:83 (27%)
view
17 x 2 groups/arm/ggd
groups/master/ggd
man_heartbeat.py
heartbeat.py
66:83 (27%)
123:140 (15%)
view
14 x 2 groups/master/ggd
groups/master/ggd
bridge.py
button.py
178:191 (9%)
204:217 (7%)
view
12 x 2 groups/arm/ggd
groups/master/ggd
arm.py
belt.py
211:222 (3%)
100:111 (4%)
view
11 x 2 groups/master/ggd
groups/master/ggd
belt.py
button.py
361:371 (3%)
204:214 (5%)
view
11 x 2 groups/master/ggd
groups/master/ggd
belt.py
bridge.py
361:371 (3%)
178:188 (7%)
view
10 x 2 groups
groups
group_setup.py
group_setup.py
141:158 (2%)
400:418 (2%)
view
9 x 2 groups/arm/ggd
groups/master/ggd
heartbeat.py
button.py
152:160 (8%)
207:215 (4%)
view
9 x 2 groups/master/ggd
groups/master/ggd
bridge.py
heartbeat.py
181:189 (6%)
152:160 (8%)
view
9 x 2 groups/arm/ggd
groups/arm/ggd
image_processor.py
image_processor.py
178:186 (4%)
219:227 (4%)
view
9 x 2 groups/arm/ggd
groups/master/ggd
heartbeat.py
bridge.py
152:160 (8%)
181:189 (6%)
view
9 x 2 groups/master/ggd
groups/master/ggd
button.py
utils.py
167:176 (4%)
70:79 (6%)
view
9 x 2 groups/arm/ggd
groups/master/ggd
utils.py
button.py
70:79 (6%)
167:176 (4%)
view
9 x 2 groups/master/ggd
groups/master/ggd
button.py
heartbeat.py
207:215 (4%)
152:160 (8%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 44 unit duplicates...
Size#FoldersFilesLinesCode
76 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
50 x 2 groups/master/ggd
groups/arm/ggd
heartbeat.py
heartbeat.py
0:0 
0:0 
view
43 x 2 groups/master/ggd
groups/arm/ggd
utils.py
utils.py
0:0 
0:0 
view
48 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
45 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
36 x 2 groups/master/ggd
groups/arm/ggd
utils.py
utils.py
0:0 
0:0 
view
47 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
48 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
25 x 2 groups/master/ggd
groups/arm/ggd
heartbeat.py
heartbeat.py
0:0 
0:0 
view
26 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
24 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
20 x 2 groups/master/ggd
groups/arm/ggd
utils.py
utils.py
0:0 
0:0 
view
24 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
17 x 2 groups/master/ggd
groups/arm/ggd
utils.py
utils.py
0:0 
0:0 
view
24 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
16 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
12 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
12 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
12 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
servode.py
servode.py
0:0 
0:0 
view
12 x 2 groups/master/ggd/servo
groups/arm/ggd/servo
hello_example.py
hello_example.py
0:0 
0:0 
view