facebookresearch / FLSim
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
  • 16% duplication:
    • 9,449 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,573 duplicated lines
  • 316 duplicates
system16% (1,573 lines)
Duplication per Extension
py16% (1,573 lines)
Duplication per Component (primary)
flsim/optimizers30% (456 lines)
flsim/utils12% (313 lines)
flsim/active_user_selectors31% (247 lines)
flsim/servers41% (169 lines)
flsim/trainers15% (148 lines)
flsim/reducers19% (88 lines)
scripts9% (40 lines)
flsim/channels9% (33 lines)
flsim/data7% (27 lines)
flsim/clients4% (20 lines)
flsim/privacy4% (12 lines)
flsim/metrics_reporter5% (7 lines)
flsim/interfaces5% (7 lines)
flsim/common1% (6 lines)
ROOT0% (0 lines)
flsim0% (0 lines)
flsim/secure_aggregation0% (0 lines)
flsim/configs0% (0 lines)

Duplication Between Components (50+ lines)

G flsim/active_user_selectors flsim/active_user_selectors flsim/utils flsim/utils flsim/active_user_selectors--flsim/utils 72 flsim/channels flsim/channels flsim/channels--flsim/utils 66

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 316 duplicates...
Size#FoldersFilesLinesCode
34 x 2 flsim/utils
flsim/utils
example_utils.py
example_utils.py
178:218 (10%)
409:449 (10%)
view
34 x 2 flsim/servers
flsim/servers
sync_secagg_servers.py
sync_servers.py
73:112 (33%)
127:166 (31%)
view
20 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
diverse_user_selector.py
324:345 (5%)
436:457 (5%)
view
18 x 2 flsim/servers
flsim/servers
sync_dp_servers.py
sync_secagg_servers.py
85:105 (15%)
74:94 (17%)
view
18 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
diverse_user_selector.py
231:249 (4%)
436:454 (4%)
view
18 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
diverse_user_selector.py
231:249 (4%)
324:342 (4%)
view
18 x 2 flsim/servers
flsim/servers
sync_dp_servers.py
sync_servers.py
85:105 (15%)
128:148 (16%)
view
15 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
simple_user_selector.py
440:454 (4%)
405:419 (4%)
view
15 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
simple_user_selector.py
235:249 (4%)
405:419 (4%)
view
15 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
simple_user_selector.py
328:342 (4%)
405:419 (4%)
view
13 x 2 flsim/optimizers
flsim/optimizers
local_optimizers.py
local_optimizers.py
41:57 (11%)
86:102 (11%)
view
13 x 2 flsim/reducers
flsim/reducers
dp_round_reducer.py
weighted_dp_round_reducer.py
32:44 (13%)
39:51 (11%)
view
13 x 2 flsim/reducers
flsim/reducers
base_round_reducer.py
secure_round_reducer.py
129:141 (8%)
28:40 (16%)
view
12 x 2 flsim/utils
flsim/utils
sample_model.py
sample_model.py
74:90 (6%)
160:176 (6%)
view
12 x 2 scripts
scripts
old_config_converter.py
old_config_converter.py
58:70 (2%)
79:91 (2%)
view
11 x 2 flsim/trainers
flsim/trainers
async_trainer.py
trainer_base.py
59:70 (6%)
41:53 (5%)
view
11 x 2 flsim/active_user_selectors
flsim/active_user_selectors
diverse_user_selector.py
diverse_user_selector.py
380:390 (2%)
473:483 (2%)
view
11 x 2 flsim/utils
flsim/utils
sample_model.py
sample_model.py
74:89 (6%)
272:287 (6%)
view
11 x 2 flsim/utils
flsim/utils
sample_model.py
sample_model.py
160:175 (6%)
272:287 (6%)
view
10 x 2 flsim/optimizers
flsim/optimizers
async_aggregators.py
async_aggregators.py
237:246 (2%)
440:449 (2%)
view
Duplicated Units
The list of top 7 duplicated units.
See data for all 7 unit duplicates...
Size#FoldersFilesLinesCode
8 x 2 flsim/reducers
flsim/reducers
weighted_dp_round_reducer.py
dp_round_reducer.py
0:0 
0:0 
view
8 x 2 flsim/reducers
flsim/reducers
base_round_reducer.py
secure_round_reducer.py
0:0 
0:0 
view
6 x 2 flsim/utils
flsim/utils
example_utils.py
example_utils.py
0:0 
0:0 
view
6 x 2 flsim/utils
flsim/utils
example_utils.py
example_utils.py
0:0 
0:0 
view
6 x 2 flsim/utils/timing
flsim/utils/timing
training_time_estimator.py
training_time_estimator.py
0:0 
0:0 
view
6 x 2 flsim/trainers
flsim/trainers
async_trainer.py
trainer_base.py
0:0 
0:0 
view
6 x 2 flsim/trainers
flsim/trainers
sync_trainer.py
private_sync_trainer.py
0:0 
0:0 
view