facebook / litho
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
  • 12% duplication:
    • 96,320 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 11,666 duplicated lines
  • 891 duplicates
system12% (11,666 lines)
Duplication per Extension
java10% (7,957 lines)
xml69% (1,892 lines)
kt24% (1,377 lines)
cpp7% (379 lines)
bzl8% (38 lines)
h<1% (23 lines)
Duplication per Component (primary)
codelabs64% (2,160 lines)
litho-processor15% (1,908 lines)
litho-widget14% (1,574 lines)
litho-core5% (1,291 lines)
litho-testing14% (775 lines)
litho-sections-processor54% (554 lines)
litho-it16% (481 lines)
litho-core-kotlin20% (425 lines)
lib4% (422 lines)
litho-rendercore9% (349 lines)
litho-widget-kotlin20% (290 lines)
litho-widget-material45% (217 lines)
litho-sections-core5% (200 lines)
litho-rendercore-text18% (190 lines)
litho-intellij-plugin3% (161 lines)
litho-rendercore-transitions3% (144 lines)
litho-sections-widget7% (113 lines)
litho-editor-core11% (94 lines)
sample29% (82 lines)
litho-rendercore-yoga16% (68 lines)
litho-editor-flipper4% (44 lines)
tools8% (38 lines)
litho-fresco13% (26 lines)
litho-rendercore-testing3% (26 lines)
litho-rendercore-incremental-mount3% (18 lines)
litho-rendercore-visibility2% (16 lines)
website0% (0 lines)
sample-codelab0% (0 lines)
litho-fresco-kotlin0% (0 lines)
litho-sections-debug0% (0 lines)
litho-annotations0% (0 lines)
sample-barebones0% (0 lines)
scripts0% (0 lines)
litho-coroutines-kotlin0% (0 lines)
litho-espresso0% (0 lines)
litho-sections-annotations0% (0 lines)

Duplication Between Components (50+ lines)

G litho-processor litho-processor litho-sections-processor litho-sections-processor litho-processor--litho-sections-processor 722 litho-testing litho-testing litho-processor--litho-testing 332 litho-widget-material litho-widget-material litho-widget litho-widget litho-widget-material--litho-widget 387 litho-rendercore-text litho-rendercore-text litho-rendercore-text--litho-widget 322 litho-core litho-core litho-core--litho-testing 103 litho-core--litho-rendercore-text 58 litho-rendercore litho-rendercore litho-core--litho-rendercore 264 litho-rendercore-yoga litho-rendercore-yoga litho-core--litho-rendercore-yoga 136 litho-rendercore-transitions litho-rendercore-transitions litho-core--litho-rendercore-transitions 62 litho-sections-core litho-sections-core litho-core--litho-sections-core 54 litho-it litho-it litho-it--litho-widget 104

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 891 duplicates...
Size#FoldersFilesLinesCode
173 x 2 codelabs/hello-world/app/src/main/res/drawable
codelabs/state/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/props/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/hscroll-height/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hello-world/app/src/main/res/drawable
codelabs/save-state-rota...p/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/props/app/src/main/res/drawable
codelabs/state/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hello-world/app/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/group-section-l...p/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/group-section-l...p/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/state/app/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/group-section-l...p/src/main/res/drawable
codelabs/props/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/save-state-rota...p/src/main/res/drawable
codelabs/state/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hscroll-height/app/src/main/res/drawable
codelabs/state/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hello-world/app/src/main/res/drawable
codelabs/props/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/group-section-l...p/src/main/res/drawable
codelabs/save-state-rota...p/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/save-state-rota...p/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/group-section-l...p/src/main/res/drawable
codelabs/hello-world/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/group-section-l...p/src/main/res/drawable
codelabs/state/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/group-section-l...p/src/main/res/drawable
codelabs/hscroll-height/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/save-state-rota...p/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/hello-world/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/props/app/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hscroll-height/app/src/main/res/drawable
codelabs/save-state-rota...p/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/state/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/events/app/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hello-world/app/src/main/res/drawable
codelabs/hscroll-height/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/props/app/src/main/res/drawable
codelabs/save-state-rota...p/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hscroll-height/app/src/main/res/drawable
codelabs/props/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
173 x 2 codelabs/hscroll-height/app/src/main/res/drawable
codelabs/updating-ui/app/src/main/res/drawable
1:189 (100%)
1:189 (100%)
view
145 x 2 litho-sections-processor...ctions/specmodels/model
litho-sections-processor...ctions/specmodels/model
116:354 (67%)
116:354 (67%)
view
120 x 2 litho-processor/src/main.../litho/specmodels/model
litho-processor/src/main.../litho/specmodels/model
93:290 (54%)
106:306 (47%)
view
97 x 2 litho-processor/src/main.../litho/specmodels/model
litho-sections-processor...ctions/specmodels/model
93:251 (44%)
116:274 (45%)
view
97 x 2 litho-processor/src/main.../litho/specmodels/model
litho-sections-processor...ctions/specmodels/model
93:251 (44%)
116:274 (45%)
view
97 x 2 litho-processor/src/main.../litho/specmodels/model
litho-sections-processor...ctions/specmodels/model
106:267 (38%)
116:274 (45%)
view
97 x 2 litho-processor/src/main.../litho/specmodels/model
litho-sections-processor...ctions/specmodels/model
106:267 (38%)
116:274 (45%)
view
77 x 2 litho-core-kotlin/src/ma...tlin/com/facebook/litho
litho-core-kotlin/src/ma...tlin/com/facebook/litho
167:264 (40%)
169:266 (41%)
view
61 x 2 codelabs/layout-spec/app.../facebook/litho/codelab
codelabs/mount-spec/app/.../facebook/litho/codelab
17:112 (100%)
17:112 (100%)
view
61 x 2 litho-rendercore-text/sr...acebook/rendercore/text
litho-widget/src/main/ja...m/facebook/litho/widget
222:288 (31%)
297:363 (21%)
view
60 x 2 codelabs/layout-spec/app.../facebook/litho/codelab
codelabs/textinput-keybo...litho/codelab/textinput
26:112 (98%)
26:112 (98%)
view
60 x 2 codelabs/mount-spec/app/.../facebook/litho/codelab
codelabs/textinput-keybo...litho/codelab/textinput
26:112 (98%)
26:112 (98%)
view
54 x 2 litho-testing/src/main/j.../facebook/litho/testing
litho-testing/src/main/j.../facebook/litho/testing
291:427 (23%)
219:355 (32%)
view
52 x 2 litho-processor/src/main.../litho/specmodels/model
litho-testing/src/main/j...itho/testing/specmodels
236:320 (5%)
228:311 (8%)
view
52 x 2 litho-processor/src/main...pecmodels/model/testing
litho-sections-processor...ctions/specmodels/model
103:186 (26%)
116:199 (24%)
view
52 x 2 litho-processor/src/main.../litho/specmodels/model
litho-processor/src/main...pecmodels/model/testing
106:192 (20%)
103:186 (26%)
view
52 x 2 litho-processor/src/main...pecmodels/model/testing
litho-sections-processor...ctions/specmodels/model
103:186 (26%)
116:199 (24%)
view
52 x 2 litho-processor/src/main.../litho/specmodels/model
litho-processor/src/main...pecmodels/model/testing
93:176 (23%)
103:186 (26%)
view
46 x 2 codelabs/hscroll-height/...c/main/res/drawable-v24
codelabs/updating-ui/app/src/main/res/drawable-v24
17:65 (100%)
17:65 (100%)
view
46 x 2 codelabs/events/app/src/main/res/drawable-v24
codelabs/state/app/src/main/res/drawable-v24
17:65 (100%)
17:65 (100%)
view
46 x 2 codelabs/group-section-l...c/main/res/drawable-v24
codelabs/hscroll-height/...c/main/res/drawable-v24
17:65 (100%)
17:65 (100%)
view
46 x 2 codelabs/group-section-l...c/main/res/drawable-v24
codelabs/save-state-rota...c/main/res/drawable-v24
17:65 (100%)
17:65 (100%)
view
46 x 2 codelabs/events/app/src/main/res/drawable-v24
codelabs/hello-world/app/src/main/res/drawable-v24
17:65 (100%)
17:65 (100%)
view
Duplicated Units
The list of top 28 duplicated units.
See data for all 28 unit duplicates...
Size#FoldersFilesLinesCode
26 x 2 litho-rendercore-text/sr...acebook/rendercore/text
litho-widget/src/main/ja...m/facebook/litho/widget
222:249 
297:324 
view
24 x 2 litho-testing/src/main/j.../facebook/litho/testing
litho-core/src/main/java/com/facebook/litho
46:73 
463:490 
view
22 x 2 litho-rendercore-text/sr...acebook/rendercore/text
litho-widget/src/main/ja...m/facebook/litho/widget
251:274 
326:349 
view
22 x 2 litho-core/src/main/java/com/facebook/litho
litho-rendercore-yoga/sr...com/facebook/rendercore
51:98 
50:97 
view
21 x 3 codelabs/layout-spec/app.../facebook/litho/codelab
codelabs/textinput-keybo...litho/codelab/textinput
codelabs/mount-spec/app/.../facebook/litho/codelab
80:105 
80:105 
80:105 
view
17 x 2 litho-it/src/main/java/com/facebook/litho/widget
litho-it/src/main/java/com/facebook/litho/widget
75:96 
77:98 
view
15 x 2 litho-it/src/main/java/com/facebook/litho/widget
litho-it/src/main/java/com/facebook/litho/widget
39:56 
37:54 
view
14 x 2 litho-core/src/main/java/com/facebook/litho
litho-rendercore-yoga/sr...com/facebook/rendercore
154:173 
153:172 
view
13 x 2 litho-testing/src/main/j.../facebook/litho/testing
litho-testing/src/main/j.../facebook/litho/testing
147:161 
110:124 
view
12 x 2 litho-core/src/main/java/com/facebook/litho
litho-sections-core/src/...facebook/litho/sections
2776:2789 
131:144 
view
11 x 2 litho-rendercore/src/mai...cebook/rendercore/utils
litho-core/src/main/java/com/facebook/litho
119:138 
104:123 
view
10 x 2 litho-processor/src/main.../litho/specmodels/model
litho-testing/src/main/j...itho/testing/specmodels
35:46 
39:50 
view
9 x 3 codelabs/layout-spec/app.../facebook/litho/codelab
codelabs/textinput-keybo...litho/codelab/textinput
codelabs/mount-spec/app/.../facebook/litho/codelab
34:44 
34:44 
34:44 
view
9 x 2 litho-it/src/main/java/com/facebook/litho/widget
litho-it/src/main/java/com/facebook/litho/widget
38:48 
46:56 
view
8 x 2 litho-rendercore/src/mai...com/facebook/rendercore
litho-core/src/main/java/com/facebook/litho
235:246 
52:63 
view
8 x 2 litho-widget/src/main/ja...m/facebook/litho/widget
litho-widget/src/main/ja...m/facebook/litho/widget
134:146 
173:185 
view
8 x 2 litho-it/src/main/java/com/facebook/litho/widget
litho-it/src/main/java/com/facebook/litho/widget
99:108 
101:110 
view
8 x 2 litho-sections-processor...ns/specmodels/processor
litho-sections-processor...ns/specmodels/processor
124:133 
121:130 
view
7 x 2 litho-processor/src/main...ho/specmodels/generator
litho-processor/src/main...odels/generator/testing
302:310 
340:348 
view
7 x 2 litho-rendercore/src/mai...com/facebook/rendercore
litho-core/src/main/java/com/facebook/litho
427:436 
926:935 
view
7 x 2 litho-testing/src/main/j.../facebook/litho/testing
litho-core/src/main/java/com/facebook/litho
26:34 
453:461 
view
7 x 2 litho-core/src/main/java/com/facebook/litho
litho-core/src/main/java/com/facebook/litho
2655:2664 
131:140 
view
7 x 2 litho-core/src/main/java/com/facebook/litho
litho-rendercore-transit...java/com/facebook/litho
28:38 
684:694 
view
7 x 3 codelabs/layout-spec/app.../facebook/litho/codelab
codelabs/textinput-keybo...litho/codelab/textinput
codelabs/mount-spec/app/.../facebook/litho/codelab
54:62 
54:62 
54:62 
view
7 x 2 litho-widget/src/main/ja...m/facebook/litho/widget
litho-widget/src/main/ja...m/facebook/litho/widget
123:132 
217:227 
view
6 x 2 litho-rendercore-text/sr...acebook/rendercore/text
litho-widget/src/main/ja...m/facebook/litho/widget
399:406 
847:854 
view
6 x 2 litho-it/src/main/java/com/facebook/litho/widget
litho-it/src/main/java/com/facebook/litho/widget
56:63 
41:48 
view
6 x 2 litho-sections-processor...ctions/specmodels/model
litho-sections-processor...ctions/specmodels/model
374:381 
374:381 
view