facebookresearch / ELF
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
  • 9% duplication:
    • 17,100 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,540 duplicated lines
  • 89 duplicates
system9% (1,540 lines)
Duplication per Extension
py15% (895 lines)
cc6% (318 lines)
h5% (313 lines)
js3% (14 lines)
Duplication per Component (primary)
rlpytorch50% (330 lines)
rts/game_TD48% (238 lines)
rts/game_CF39% (236 lines)
go6% (146 lines)
rts/game_MC7% (125 lines)
elf_python10% (90 lines)
rlpytorch/utils23% (90 lines)
rlpytorch/methods16% (60 lines)
rlpytorch/runner14% (50 lines)
rts/engine1% (47 lines)
elf1% (40 lines)
atari4% (30 lines)
rlpytorch/trainer4% (18 lines)
ROOT2% (14 lines)
rts/frontend3% (14 lines)
rts/backend2% (12 lines)
rts0% (0 lines)
rlpytorch/sampler0% (0 lines)
rlpytorch/stats0% (0 lines)
elf/lib0% (0 lines)

Duplication Between Components (50+ lines)

G rts/game_CF rts/game_CF rts/game_TD rts/game_TD rts/game_CF--rts/game_TD 416 rts/game_MC rts/game_MC rts/game_CF--rts/game_MC 150 elf_python elf_python rlpytorch/utils rlpytorch/utils elf_python--rlpytorch/utils 180 rts/game_MC--rts/game_TD 106 atari atari go go atari--go 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 89 duplicates...
Size#FoldersFilesLinesCode
165 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
11:215 (100%)
11:215 (100%)
view
39 x 2 elf_python
rlpytorch/utils
memory_receiver.py
utils.py
157:202 (13%)
302:347 (13%)
view
34 x 2 rts/game_CF
rts/game_TD
game.py
game.py
30:81 (72%)
30:81 (72%)
view
28 x 2 elf_python
rlpytorch/utils
utils.py
utils.py
25:54 (73%)
47:76 (9%)
view
23 x 2 elf_python
rlpytorch/utils
memory_receiver.py
utils.py
205:232 (7%)
91:118 (8%)
view
20 x 2 rts/game_CF
rts/game_TD
python_options.h
python_options.h
50:82 (50%)
46:78 (54%)
view
15 x 2 rts/game_CF
rts/game_TD
ai.h
ai.h
83:105 (17%)
50:71 (22%)
view
15 x 2 rts/game_CF
rts/game_TD
cc
python_wrapper.cc
python_wrapper.cc
21:42 (28%)
21:42 (30%)
view
14 x 2 rts/game_CF
rts/game_TD
cc
wrapper_callback.cc
wrapper_callback.cc
38:60 (51%)
37:61 (51%)
view
14 x 2 rlpytorch/methods
rlpytorch/methods
actor_critic.py
q_learning.py
35:50 (30%)
35:50 (28%)
view
14 x 2 rts/game_CF
rts/game_TD
model.py
model.py
79:98 (21%)
71:90 (23%)
view
14 x 2 atari
go
atari_game_specific.h
go_game_specific.h
50:70 (25%)
86:106 (27%)
view
14 x 2 rts/game_CF
rts/game_TD
wrapper_callback.h
wrapper_callback.h
17:35 (82%)
17:38 (82%)
view
12 x 2 rts/game_CF
rts/game_TD
python_options.h
python_options.h
20:39 (30%)
21:40 (32%)
view
12 x 2 rts/game_CF
rts/game_TD
model.py
model.py
23:37 (18%)
20:34 (20%)
view
12 x 2 rts/game_CF
rts/game_MC
game.py
game.py
66:81 (25%)
148:163 (10%)
view
12 x 2 rts/game_CF
rts/game_TD
cc
python_wrapper.cc
python_wrapper.cc
82:100 (23%)
79:97 (24%)
view
12 x 2 go
rts/game_MC
game.py
game.py
161:176 (9%)
148:163 (10%)
view
12 x 2 rts/game_MC
rts/game_TD
game.py
game.py
148:163 (10%)
66:81 (25%)
view
12 x 2 go
rts/game_CF
game.py
game.py
161:176 (9%)
66:81 (25%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 23 unit duplicates...
Size#FoldersFilesLinesCode
41 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
23 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
20 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
14 x 2 rts/game_TD
rts/game_CF
cc
wrapper_callback.cc
wrapper_callback.cc
36:57 
36:56 
view
14 x 2 elf_python
rlpytorch/utils
utils.py
utils.py
0:0 
0:0 
view
13 x 2 elf_python
rlpytorch/utils
utils.py
utils.py
0:0 
0:0 
view
12 x 2 elf_python
rlpytorch/utils
memory_receiver.py
utils.py
0:0 
0:0 
view
11 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
10 x 2 elf_python
rlpytorch/utils
memory_receiver.py
utils.py
0:0 
0:0 
view
10 x 2 elf_python
rlpytorch/utils
memory_receiver.py
utils.py
0:0 
0:0 
view
8 x 3 go
rts/engine
rts/engine
cc
go_state.cc
cmd_util.cc
custom_enum.h
15:23 
23:31 
26:34 
view
8 x 2 rts/game_MC
rts/game_CF
mixed_ai.h
ai.h
94:102 
110:118 
view
8 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
8 x 2 rts/game_TD
rts/game_CF
model.py
model.py
0:0 
0:0 
view
7 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
8 x 2 rlpytorch
rlpytorch
args_provider.py
args_utils.py
0:0 
0:0 
view
7 x 2 elf
elf
utils.h
utils.h
71:78 
81:88 
view
6 x 3 rts/game_MC
rts/game_TD
rts/game_CF
game.py
game.py
game.py
0:0 
0:0 
0:0 
view
6 x 2 rts/backend
rts/backend
cc
main_loop.cc
main_loop.cc
149:156 
158:165 
view
6 x 2 rts/game_TD
rts/game_CF
cc
wrapper_callback.cc
wrapper_callback.cc
24:30 
24:30 
view