facebook / pyre-check
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
  • 14% duplication:
    • 121,011 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 17,421 duplicated lines
  • 79,244 duplicates
system14% (17,421 lines)
Duplication per Extension
ml12% (10,952 lines)
mli41% (4,428 lines)
py7% (1,436 lines)
pyi15% (271 lines)
mly8% (144 lines)
c5% (96 lines)
ts87% (58 lines)
mll7% (36 lines)
Duplication per Component (primary)
source/analysis12% (5,551 lines)
source/interprocedural_analyses17% (3,154 lines)
source/ast29% (2,152 lines)
source/hack_parallel10% (739 lines)
client/commands11% (724 lines)
source/server16% (666 lines)
source/domains18% (651 lines)
source/interprocedural13% (586 lines)
source19% (450 lines)
source/command36% (445 lines)
source/parser14% (389 lines)
source/service16% (362 lines)
client6% (265 lines)
source/buck12% (217 lines)
source/data_structures31% (191 lines)
stubs/django13% (182 lines)
tools/upgrade6% (167 lines)
tools/generate_taint_models8% (144 lines)
source/new_parser9% (103 lines)
stubs/mysql25% (89 lines)
tools/ide_plugins87% (58 lines)
scripts3% (44 lines)
tools/incremental_test4% (38 lines)
api5% (19 lines)
client/libcst_vendored_visitors1% (16 lines)
scripts/pypi3% (12 lines)
client/log2% (7 lines)
stubs/integration_test0% (0 lines)
stubs/rest_framework0% (0 lines)
stubs/lxml0% (0 lines)
tools/playground0% (0 lines)
tools/pysa_integration_tests0% (0 lines)
ROOT0% (0 lines)
pyre_extensions0% (0 lines)

Duplication Between Components (50+ lines)

G source/analysis source/analysis source/interprocedural_analyses source/interprocedural_analyses source/analysis--source/interprocedural_analyses 1320 source/interprocedural source/interprocedural source/analysis--source/interprocedural 997 source/hack_parallel source/hack_parallel source/analysis--source/hack_parallel 990 source/ast source/ast source/analysis--source/ast 947 source/server source/server source/analysis--source/server 929 source source source/analysis--source 817 source/service source/service source/analysis--source/service 798 source/parser source/parser source/analysis--source/parser 745 source/domains source/domains source/analysis--source/domains 732 source/command source/command source/analysis--source/command 722 source/data_structures source/data_structures source/analysis--source/data_structures 654 source/buck source/buck source/analysis--source/buck 636 source/new_parser source/new_parser source/analysis--source/new_parser 600 source/interprocedural_analyses--source/server 680 source/interprocedural_analyses--source 581 source/interprocedural_analyses--source/service 547 source/interprocedural_analyses--source/parser 461 source/interprocedural_analyses--source/new_parser 384 source/interprocedural--source/interprocedural_analyses 649 source/interprocedural--source/server 403 source/interprocedural--source 325 source/interprocedural--source/service 290 source/hack_parallel--source/interprocedural_analyses 756 source/hack_parallel--source/interprocedural 510 source/hack_parallel--source/server 568 source/hack_parallel--source 512 source/hack_parallel--source/service 454 source/hack_parallel--source/parser 375 source/hack_parallel--source/new_parser 360 source/ast--source/interprocedural_analyses 604 source/ast--source/interprocedural 355 source/ast--source/hack_parallel 536 source/ast--source/server 403 source/ast--source 356 source/ast--source/service 299 source/ast--source/parser 566 source/ast--source/domains 312 source/server--source/service 334 source--source/server 392 source/domains--source/interprocedural_analyses 516 source/domains--source/interprocedural 294 source/domains--source/hack_parallel 492 source/domains--source/server 348 source/domains--source 294 source/command--source/interprocedural_analyses 481 source/command--source/hack_parallel 418 source/data_structures--source/interprocedural_analyses 415 source/data_structures--source/hack_parallel 362 source/buck--source/interprocedural_analyses 420 source/buck--source/hack_parallel 396

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 50 longest duplicates.
See data for all 79,244 duplicates...
Size#FoldersFilesLinesCode
383 x 2 source/analysis
source/analysis
20:434 (9%)
11:425 (84%)
view
84 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
35:119 (21%)
34:118 (67%)
view
75 x 2 source/analysis
source/analysis
4623:4734 (1%)
830:941 (9%)
view
62 x 2 source/analysis
source/analysis
10:82 (5%)
8:80 (55%)
view
59 x 2 source/analysis
source/analysis
14:82 (5%)
103:171 (5%)
view
59 x 2 source/analysis
source/analysis
103:171 (5%)
12:80 (52%)
view
58 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
138:199 (1%)
114:175 (29%)
view
57 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
19:80 (1%)
14:75 (28%)
view
51 x 2 source/interprocedural
source/interprocedural
94:156 (20%)
101:163 (35%)
view
51 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
78:137 (2%)
84:143 (2%)
view
45 x 2 source/ast
source/ast
1028:1080 (2%)
309:361 (13%)
view
39 x 2 source/analysis
source/analysis
3019:3059 (<1%)
91:131 (14%)
view
38 x 2 source/domains
source/domains
10:78 (24%)
8:76 (82%)
view
37 x 2 source/analysis
source/analysis
2979:3015 (<1%)
52:88 (13%)
view
36 x 2 source/ast
source/ast
425:466 (2%)
183:224 (10%)
view
36 x 2 source/ast
source/ast
366:422 (2%)
124:180 (10%)
view
36 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
1992:2027 (1%)
2042:2077 (1%)
view
35 x 2 source/analysis
source/analysis
9:48 (18%)
8:47 (34%)
view
33 x 2 client/commands
client/commands
785:817 (2%)
228:260 (12%)
view
33 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
89:130 (17%)
70:111 (22%)
view
32 x 2 source/interprocedural_analyses/taint
source/interprocedural_analyses/taint
662:696 (1%)
653:688 (1%)
view
32 x 2 source/analysis
source/analysis
4736:4782 (<1%)
947:993 (4%)
view
31 x 2 source/ast
source/ast
471:530 (1%)
223:282 (9%)
view
30 x 2 client/commands
client/commands
283:315 (1%)
85:117 (11%)
view
30 x 2 source/analysis
source/analysis
2946:2975 (<1%)
19:48 (11%)
view
30 x 2 source/analysis
source/analysis
3429:3458 (<1%)
3514:3543 (<1%)
view
29 x 2 source/command
source/command
48:78 (12%)
40:70 (16%)
view
29 x 2 source/data_structures
source/data_structures
23:76 (5%)
19:72 (61%)
view
28 x 2 source/analysis
source/analysis
1:42 (34%)
1:42 (84%)
view
27 x 2 source/analysis
source/analysis
2068:2094 (<1%)
2107:2133 (<1%)
view
27 x 2 source/ast
source/ast
766:795 (1%)
280:309 (6%)
view
27 x 2 client
client
863:889 (2%)
970:996 (2%)
view
26 x 2 source/service
source/service
69:111 (11%)
30:72 (24%)
view
26 x 2 source/server
source/server
18:43 (2%)
11:36 (17%)
view
26 x 2 source/ast
source/ast
1504:1529 (1%)
1555:1580 (1%)
view
25 x 2 source/ast
source/ast
1396:1422 (1%)
411:437 (7%)
view
25 x 2 source/interprocedural
source/interprocedural
14:45 (10%)
15:46 (25%)
view
25 x 2 source/parser
source/parser
243:268 (6%)
270:295 (6%)
view
25 x 2 source/analysis
source/analysis
34:72 (<1%)
18:56 (31%)
view
25 x 2 source/ast
source/ast
152:182 (1%)
58:88 (5%)
view
25 x 2 source/server
source/server
83:111 (2%)
75:103 (16%)
view
24 x 2 source/command
source/command
47:70 (14%)
90:113 (12%)
view
24 x 2 source/ast
source/ast
769:793 (1%)
803:827 (1%)
view
24 x 2 source/command
source/command
55:78 (10%)
90:113 (12%)
view
24 x 2 source/ast
source/ast
803:827 (1%)
283:307 (5%)
view
24 x 2 source/ast
source/ast
1083:1107 (1%)
313:337 (7%)
view
24 x 2 source/analysis
source/analysis
3212:3235 (<1%)
3300:3323 (<1%)
view
24 x 2 source/ast
source/ast
1032:1056 (1%)
1083:1107 (1%)
view
24 x 2 source/ast
source/ast
228:257 (1%)
89:118 (5%)
view
23 x 2 source/analysis
source/analysis
22:45 (3%)
22:45 (20%)
view
Duplicated Units
The list of top 2 duplicated units.
See data for all 2 unit duplicates...
Size#FoldersFilesLinesCode
21 x 2 tools/ide_plugins/pysa-vscode/src
tools/ide_plugins/vscode/src
34:61 
34:61 
view
6 x 3 stubs/mysql/connector
stubs/mysql/connector
stubs/mysql/connector
0:0 
0:0 
0:0 
view