facebook / flipper
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
  • 8% duplication:
    • 83,279 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 6,856 duplicated lines
  • 549 duplicates
system8% (6,856 lines)
Duplication per Extension
tsx6% (3,644 lines)
java9% (820 lines)
js38% (605 lines)
mm9% (459 lines)
cpp15% (389 lines)
html76% (244 lines)
css10% (239 lines)
m6% (124 lines)
h4% (122 lines)
hs18% (68 lines)
rs12% (60 lines)
ts12% (56 lines)
yaml23% (14 lines)
swift6% (12 lines)
Duplication per Component (primary)
desktop/flipper-ui-core6% (1,290 lines)
android/src10% (784 lines)
website/src64% (587 lines)
desktop/static19% (483 lines)
desktop/plugins3% (437 lines)
iOS/Plugins7% (412 lines)
desktop/flipper-plugin3% (353 lines)
desktop/scripts13% (351 lines)
desktop/babel-transformer35% (256 lines)
desktop/app32% (240 lines)
desktop/flipper-ui-browser53% (236 lines)
xplat/FlipperWebSocket38% (230 lines)
desktop/flipper-server-core2% (148 lines)
iOS/FlipperKitTests42% (129 lines)
desktop/flipper-server22% (123 lines)
android/sample22% (115 lines)
xplat/Flipper5% (83 lines)
iOS/FlipperKit6% (78 lines)
packer/src15% (74 lines)
desktop/flipper-common4% (71 lines)
js/js-flipper15% (56 lines)
xplat/FlipperTests15% (51 lines)
desktop/eslint-plugin-flipper15% (44 lines)
desktop/plugin-lib7% (35 lines)
scripts/stricter28% (31 lines)
scripts/bump23% (31 lines)
desktop/doctor9% (30 lines)
desktop/pkg4% (27 lines)
android/plugins<1% (16 lines)
desktop/flipper-dump6% (13 lines)
android/no-op25% (9 lines)
desktop/pkg-lib3% (8 lines)
react-native/react-native-flipper1% (7 lines)
iOS/Tutorial8% (6 lines)
iOS/SampleSwift5% (6 lines)
scripts3% (6 lines)
xplat/FlipperTestLib0% (0 lines)
react-native/ReactNativeFlipperExample0% (0 lines)
js/react-flipper-example0% (0 lines)
website0% (0 lines)
website/static0% (0 lines)
desktop/test-utils0% (0 lines)
desktop0% (0 lines)
desktop/themes0% (0 lines)
desktop/eslint-rules0% (0 lines)
iOS/FlipperKitTestUtils0% (0 lines)
iOS/FBDefines0% (0 lines)
iOS/SonarKitTests0% (0 lines)
iOS/Sample0% (0 lines)
libs/jni-hack0% (0 lines)
android/tutorial0% (0 lines)
PortForwardingMacApp0% (0 lines)
packer0% (0 lines)

Duplication Between Components (50+ lines)

G desktop/flipper-ui-core desktop/flipper-ui-core website/src website/src desktop/flipper-ui-core--website/src 1122 desktop/plugins desktop/plugins desktop/flipper-ui-core--desktop/plugins 52 desktop/app desktop/app desktop/flipper-ui-browser desktop/flipper-ui-browser desktop/app--desktop/flipper-ui-browser 448 desktop/flipper-server desktop/flipper-server desktop/app--desktop/flipper-server 50 desktop/flipper-plugin desktop/flipper-plugin desktop/flipper-plugin--desktop/flipper-ui-core 224 desktop/scripts desktop/scripts desktop/flipper-server--desktop/scripts 145 iOS/FlipperKit iOS/FlipperKit xplat/FlipperWebSocket xplat/FlipperWebSocket iOS/FlipperKit--xplat/FlipperWebSocket 118 scripts/bump scripts/bump scripts/stricter scripts/stricter scripts/bump--scripts/stricter 62

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 549 duplicates...
Size#FoldersFilesLinesCode
132 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
210:343 (26%)
219:352 (19%)
view
116 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
345:464 (23%)
355:474 (17%)
view
93 x 2 desktop/app/src
desktop/flipper-ui-browser/src
24:168 (56%)
24:168 (57%)
view
78 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
129:208 (15%)
137:216 (11%)
view
58 x 2 desktop/app/src
desktop/flipper-ui-browser/src
177:262 (34%)
172:257 (35%)
view
57 x 2 android/src/main/java/co...s/inspector/descriptors
android/src/main/java/co...s/inspector/descriptors
25:108 (95%)
25:108 (95%)
view
44 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
77:120 (8%)
83:126 (6%)
view
42 x 2 desktop/app/src
desktop/flipper-ui-browser/src
153:198 (29%)
58:103 (64%)
view
40 x 2 desktop/plugins/public/hermesdebuggerrn
desktop/plugins/public/hermesdebuggerrn
13:58 (51%)
13:58 (67%)
view
38 x 2 desktop/static
desktop/static
16:65 (37%)
16:65 (42%)
view
38 x 2 desktop/static
desktop/static
84:127 (37%)
67:110 (42%)
view
33 x 2 desktop/plugins/public/hermesdebuggerrn
desktop/plugins/public/hermesdebuggerrn
13:49 (42%)
14:50 (51%)
view
33 x 2 desktop/plugins/public/hermesdebuggerrn
desktop/plugins/public/hermesdebuggerrn
13:49 (55%)
14:50 (51%)
view
29 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
32:60 (25%)
583:611 (4%)
view
29 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
15:47 (100%)
13:50 (100%)
view
27 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
72:98 (24%)
623:649 (4%)
view
26 x 2 desktop/flipper-plugin/src/ui
desktop/flipper-ui-core/src/ui/components
168:196 (13%)
169:197 (20%)
view
25 x 2 desktop/flipper-plugin/src/ui
desktop/flipper-ui-core/src/ui/components
108:140 (12%)
110:142 (19%)
view
23 x 2 desktop/app/src
desktop/flipper-ui-browser/src
19:50 (79%)
19:51 (79%)
view
22 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
505:529 (4%)
517:541 (3%)
view
22 x 2 android/src/main/java/co...tors/utils/stethocopies
android/src/main/java/co...tors/utils/stethocopies
77:108 (21%)
66:97 (33%)
view
21 x 2 iOS/Plugins/FlipperKitLa...narKitLayoutPluginTests
iOS/Plugins/FlipperKitLa...narKitLayoutPluginTests
183:207 (10%)
244:268 (10%)
view
21 x 2 android/src/main/java/co...s/inspector/descriptors
android/src/main/java/co...s/inspector/descriptors
101:133 (29%)
91:123 (32%)
view
20 x 2 desktop/flipper-plugin/src/ui
desktop/flipper-ui-core/src/ui/components
142:165 (10%)
144:166 (15%)
view
20 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
43:63 (3%)
48:68 (2%)
view
19 x 2 desktop/plugins/public/network
desktop/plugins/public/network
422:444 (3%)
480:502 (3%)
view
19 x 2 desktop/static
desktop/static
13:32 (23%)
18:37 (18%)
view
19 x 2 desktop/static
desktop/static
13:32 (23%)
18:37 (21%)
view
18 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
17:36 (81%)
15:34 (90%)
view
18 x 2 android/sample/src/debug...lipper/connectivitytest
android/sample/src/debug...flipper/plugins/example
40:61 (41%)
41:62 (46%)
view
18 x 2 android/src/main/java/co...s/inspector/descriptors
android/src/main/java/co...s/inspector/descriptors
48:75 (25%)
48:75 (28%)
view
18 x 2 desktop/flipper-plugin/src/ui/data-inspector
desktop/flipper-plugin/src/ui/data-inspector
576:593 (3%)
598:615 (3%)
view
17 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
28:46 (58%)
32:50 (58%)
view
17 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
29:47 (58%)
28:46 (58%)
view
17 x 2 desktop/scripts
desktop/scripts
56:72 (5%)
39:55 (12%)
view
17 x 2 scripts/bump
scripts/stricter
91:107 (14%)
39:55 (18%)
view
16 x 2 desktop/flipper-ui-core/...ents/elements-inspector
desktop/plugins/public/layout
46:63 (14%)
49:66 (8%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
23:40 (64%)
30:47 (55%)
view
16 x 2 desktop/app/src
desktop/flipper-server/src
62:80 (11%)
57:75 (18%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
19:36 (72%)
33:50 (55%)
view
16 x 2 desktop/flipper-server-core/src/utils
js/js-flipper/src
11:96 (100%)
25:110 (8%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
17:34 (80%)
33:50 (55%)
view
16 x 2 desktop/eslint-plugin-flipper/src/rules
desktop/eslint-plugin-flipper/src/rules
57:76 (19%)
87:106 (19%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
19:36 (72%)
30:47 (55%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
17:34 (80%)
29:46 (55%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
17:34 (80%)
30:47 (55%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
19:36 (72%)
23:40 (64%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
17:34 (80%)
23:40 (64%)
view
16 x 2 desktop/flipper-ui-core/src/sandy-chrome
website/src/components
101:117 (14%)
652:668 (2%)
view
16 x 2 desktop/babel-transformer/src
desktop/babel-transformer/src
23:40 (64%)
33:50 (55%)
view
Duplicated Units
The list of top 19 duplicated units.
See data for all 19 unit duplicates...
Size#FoldersFilesLinesCode
27 x 2 desktop/flipper-ui-browser/src
desktop/app/src
85:117 
85:117 
view
17 x 2 desktop/flipper-ui-browser/src
desktop/app/src
36:72 
36:72 
view
17 x 2 desktop/flipper-server/src
desktop/plugin-lib/src
31:49 
29:47 
view
14 x 2 xplat/FlipperWebSocket
xplat/FlipperWebSocket
145:162 
138:154 
view
13 x 2 desktop/flipper-ui-browser/src
desktop/app/src
233:249 
238:254 
view
11 x 2 desktop/flipper-server-core/src/devices/desktop
desktop/flipper-server-core/src/devices/desktop
14:26 
14:26 
view
10 x 2 xplat/FlipperWebSocket
xplat/FlipperWebSocket
171:182 
163:174 
view
9 x 8 desktop/babel-transformer/src
desktop/babel-transformer/src
desktop/babel-transformer/src
desktop/babel-transformer/src
desktop/babel-transformer/src
desktop/babel-transformer/src
desktop/babel-transformer/src
desktop/babel-transformer/src
27:37 
31:41 
41:51 
37:47 
19:29 
21:31 
25:35 
38:48 
view
8 x 2 desktop/flipper-ui-browser/src
desktop/app/src
216:231 
221:236 
view
7 x 2 desktop/flipper-ui-browser/src
desktop/app/src
251:259 
256:264 
view
7 x 2 desktop/flipper-ui-browser/src
desktop/app/src
39:47 
39:47 
view
7 x 2 desktop/flipper-plugin/src/ui
desktop/flipper-ui-core/src/ui/components
121:129 
123:131 
view
7 x 2 android/src/main/java/co...s/inspector/descriptors
android/src/main/java/co...s/inspector/descriptors
57:65 
57:65 
view
6 x 2 desktop/flipper-server-core/src/comms
desktop/flipper-ui-core/src/utils
193:200 
10:17 
view
6 x 2 desktop/plugins/public/hermesdebuggerrn
desktop/plugins/public/reactdevtools
66:74 
60:68 
view
6 x 2 desktop/flipper-plugin/src/ui
desktop/flipper-ui-core/src/ui/components
108:115 
110:117 
view
6 x 2 iOS/FlipperKit
android/src/main/cpp
74:81 
420:427 
view
6 x 2 android/src/main/java/co...s/inspector/descriptors
android/src/main/java/co...s/inspector/descriptors
92:100 
102:110 
view
41 x 2 desktop/flipper-ui-browser/src
desktop/app/src
58:104 
153:199 
view