microsoft / sonder-ui
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
  • 52% duplication:
    • 17,328 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 9,181 duplicated lines
  • 1,378 duplicates
system52% (9,181 lines)
Duplication per Extension
tsx59% (2,837 lines)
html52% (2,534 lines)
css57% (2,059 lines)
js40% (1,589 lines)
ts66% (162 lines)
Duplication per Component (primary)
src/studies/apg36% (1,837 lines)
src/studies/tooltip74% (872 lines)
src/studies/grid87% (710 lines)
src/draft-components/grid75% (527 lines)
src/draft-components/gridv263% (526 lines)
src/studies/forms72% (513 lines)
src/studies/storefront50% (315 lines)
src/draft-components/multiselect-buttons287% (280 lines)
src/draft-components/multiselect-listbox82% (269 lines)
src/components/multiselect97% (219 lines)
src/studies/secondary-actions50% (189 lines)
src/draft-components/shared73% (177 lines)
src/studies/live-regions40% (161 lines)
src/components/select71% (149 lines)
src/components/combobox83% (146 lines)
src/draft-components/combo-twelve94% (122 lines)
src/draft-components/combo-filter95% (119 lines)
src/draft-components/combo-eleven94% (118 lines)
src/draft-components/multiselect-inline82% (112 lines)
src/components/disclosure94% (111 lines)
src/draft-components/disclosure93% (111 lines)
src/draft-components/combo-autoselect80% (110 lines)
src/draft-components/multiselect-csv73% (109 lines)
src/draft-components/combo-autocomplete75% (104 lines)
src/draft-components/combo-nofilter85% (100 lines)
src/draft-components/combo-readonly88% (97 lines)
src/draft-components/combo-noinput82% (89 lines)
src/draft-components/multiselect-buttons92% (88 lines)
src/components/tooltip68% (80 lines)
src/draft-components/tooltip-corner60% (75 lines)
src/draft-components/listbox-expand65% (70 lines)
src/shared59% (68 lines)
src/studies/modal25% (66 lines)
src/draft-components/tooltip-control63% (63 lines)
src/draft-components/tooltip-escape68% (63 lines)
src19% (55 lines)
src/draft-components/listbox-actions24% (53 lines)
src/components/tabs61% (52 lines)
src/draft-components/tab-actions35% (52 lines)
src/draft-components/tooltip-arrow34% (47 lines)
src/draft-components/listbox-button51% (40 lines)
src/draft-components/splitbutton9% (25 lines)
src/draft-components/combo-native52% (19 lines)
src/draft-components/multiselect-native55% (19 lines)
src/draft-components/textarea-charcount17% (16 lines)
src/draft-components/filter-list13% (16 lines)
src/components/modal6% (9 lines)
src/draft-components/batch-announcer25% (7 lines)
src/draft-components/toolbar10% (6 lines)
src/assets0% (0 lines)
src/draft-components/tree-actions0% (0 lines)
src/studies/combobox-apg0% (0 lines)
src/studies/combobox0% (0 lines)
src/studies0% (0 lines)
ROOT0% (0 lines)

Duplication Between Components (50+ lines)

G src/draft-components/grid src/draft-components/grid src/draft-components/gridv2 src/draft-components/gridv2 src/draft-components/grid--src/draft-components/gridv2 1053 src/studies/apg src/studies/apg src/studies/tooltip src/studies/tooltip src/studies/apg--src/studies/tooltip 992 src/draft-components/multiselect-buttons2 src/draft-components/multiselect-buttons2 src/draft-components/multiselect-listbox src/draft-components/multiselect-listbox src/draft-components/multiselect-buttons2--src/draft-components/multiselect-listbox 538 src/draft-components/shared src/draft-components/shared src/draft-components/multiselect-buttons2--src/draft-components/shared 219 src/draft-components/multiselect-listbox--src/draft-components/shared 219 src/components/multiselect src/components/multiselect src/components/multiselect--src/draft-components/multiselect-buttons2 396 src/components/multiselect--src/draft-components/multiselect-listbox 382 src/components/multiselect--src/draft-components/shared 219 src/components/select src/components/select src/components/multiselect--src/components/select 168 src/draft-components/multiselect-buttons src/draft-components/multiselect-buttons src/components/multiselect--src/draft-components/multiselect-buttons 160 src/draft-components/combo-eleven src/draft-components/combo-eleven src/draft-components/combo-filter src/draft-components/combo-filter src/draft-components/combo-eleven--src/draft-components/combo-filter 230 src/draft-components/combo-twelve src/draft-components/combo-twelve src/draft-components/combo-eleven--src/draft-components/combo-twelve 224 src/draft-components/combo-nofilter src/draft-components/combo-nofilter src/draft-components/combo-eleven--src/draft-components/combo-nofilter 168 src/draft-components/multiselect-csv src/draft-components/multiselect-csv src/draft-components/combo-eleven--src/draft-components/multiselect-csv 158 src/draft-components/multiselect-inline src/draft-components/multiselect-inline src/draft-components/combo-eleven--src/draft-components/multiselect-inline 150 src/draft-components/combo-filter--src/draft-components/combo-twelve 218 src/draft-components/combo-filter--src/draft-components/combo-nofilter 180 src/draft-components/combo-filter--src/draft-components/multiselect-csv 162 src/draft-components/combo-readonly src/draft-components/combo-readonly src/draft-components/combo-filter--src/draft-components/combo-readonly 152 src/draft-components/combo-filter--src/draft-components/multiselect-inline 148 src/draft-components/combo-twelve--src/draft-components/multiselect-csv 146 src/draft-components/combo-twelve--src/draft-components/multiselect-inline 146 src/components/disclosure src/components/disclosure src/draft-components/disclosure src/draft-components/disclosure src/components/disclosure--src/draft-components/disclosure 222 src/components/combobox src/components/combobox src/components/combobox--src/components/select 214 src/components/combobox--src/components/multiselect 212 src/components/combobox--src/draft-components/multiselect-listbox 196 src/components/combobox--src/draft-components/multiselect-buttons2 196 src/components/combobox--src/draft-components/shared 153 src/components/select--src/draft-components/multiselect-listbox 178 src/components/select--src/draft-components/multiselect-buttons2 178 src/components/select--src/draft-components/shared 159 src/draft-components/combo-autocomplete src/draft-components/combo-autocomplete src/draft-components/combo-autocomplete--src/draft-components/combo-filter 194 src/draft-components/combo-autocomplete--src/draft-components/combo-eleven 182 src/draft-components/combo-autocomplete--src/draft-components/combo-twelve 176 src/draft-components/combo-autoselect src/draft-components/combo-autoselect src/draft-components/combo-autocomplete--src/draft-components/combo-autoselect 174 src/draft-components/combo-autocomplete--src/draft-components/combo-nofilter 156 src/draft-components/combo-autocomplete--src/draft-components/multiselect-csv 148 src/draft-components/combo-nofilter--src/draft-components/combo-readonly 182 src/draft-components/combo-nofilter--src/draft-components/combo-twelve 162 src/draft-components/combo-readonly--src/draft-components/combo-twelve 138 src/draft-components/combo-autoselect--src/draft-components/combo-eleven 180 src/draft-components/combo-autoselect--src/draft-components/combo-filter 178 src/draft-components/combo-autoselect--src/draft-components/combo-twelve 168 src/draft-components/combo-autoselect--src/draft-components/combo-nofilter 146 src/draft-components/combo-autoselect--src/draft-components/multiselect-csv 138 src/draft-components/multiselect-csv--src/draft-components/multiselect-inline 170 src/draft-components/multiselect-inline--src/draft-components/multiselect-listbox 138 src/draft-components/multiselect-buttons--src/draft-components/multiselect-inline 158 src/studies/forms src/studies/forms src/studies/forms--src/studies/tooltip 154 src/draft-components/combo-noinput src/draft-components/combo-noinput src/draft-components/combo-noinput--src/draft-components/combo-readonly 154

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 1,378 duplicates...
Size#FoldersFilesLinesCode
192 x 2 src/studies/apg/toolbar/js
src/studies/tooltip/js
FormatToolbar.js
FormatToolbar.js
67:322 (81%)
62:317 (84%)
view
129 x 2 src/draft-components/multiselect-buttons2
src/draft-components/multiselect-listbox
multiselect.css
multiselect-listbox.css
6:154 (100%)
6:154 (100%)
view
129 x 2 src/components/multiselect
src/draft-components/multiselect-buttons2
multiselect.css
multiselect.css
6:154 (100%)
6:154 (100%)
view
129 x 2 src/components/multiselect
src/draft-components/multiselect-listbox
multiselect.css
multiselect-listbox.css
6:154 (100%)
6:154 (100%)
view
86 x 2 src/draft-components/multiselect-buttons2
src/draft-components/shared
multiselect.css
combo-base.css
24:124 (66%)
40:140 (54%)
view
86 x 2 src/draft-components/multiselect-listbox
src/draft-components/shared
multiselect-listbox.css
combo-base.css
24:124 (66%)
40:140 (54%)
view
86 x 2 src/components/multiselect
src/draft-components/shared
multiselect.css
combo-base.css
24:124 (66%)
40:140 (54%)
view
85 x 2 src/draft-components/grid
src/draft-components/gridv2
grid.css
grid.css
31:131 (45%)
31:131 (38%)
view
80 x 2 src/components/combobox
src/components/select
combobox.css
select.css
6:96 (100%)
10:100 (96%)
view
76 x 2 src/draft-components/combo-eleven
src/draft-components/combo-twelve
combo-eleven.tsx
combo-twelve.tsx
100:200 (60%)
104:204 (58%)
view
65 x 2 src/draft-components/multiselect-buttons2
src/draft-components/multiselect-listbox
multiselect.tsx
multiselect-listbox.tsx
136:213 (34%)
140:217 (32%)
view
59 x 2 src/components/disclosure
src/draft-components/disclosure
disclosure.css
disclosure.css
1:68 (100%)
1:68 (100%)
view
58 x 2 src/draft-components/grid
src/draft-components/gridv2
row.tsx
row.tsx
6:76 (100%)
6:76 (100%)
view
53 x 2 src/studies/forms
src/studies/tooltip/css
forms.css
study.css
3:67 (92%)
210:275 (21%)
view
53 x 2 src/draft-components/combo-eleven
src/draft-components/combo-filter
combo-eleven.tsx
combo-filter.tsx
94:156 (42%)
94:156 (42%)
view
52 x 2 src/draft-components/grid
src/draft-components/gridv2
header-cell.tsx
header-cell.tsx
28:88 (76%)
30:90 (74%)
view
51 x 2 src/studies/storefront/css
src/studies/tooltip/css
menuButton.css
study.css
1:59 (100%)
152:210 (20%)
view
51 x 2 src/studies/apg/toolbar/css
src/studies/tooltip/css
menuButton.css
study.css
1:59 (100%)
152:210 (20%)
view
51 x 2 src/studies/apg/toolbar/css
src/studies/storefront/css
menuButton.css
menuButton.css
1:59 (100%)
1:59 (100%)
view
50 x 2 src/studies/apg/treegrid
src/studies/apg/treegrid
cell-row.html
rows.html
40:101 (59%)
39:100 (59%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 65 unit duplicates...
Size#FoldersFilesLinesCode
35 x 2 src/studies/apg/toolbar/js
src/studies/tooltip/js
FormatToolbar.js
FormatToolbar.js
236:272 
231:267 
view
25 x 2 src/draft-components/combo-autocomplete
src/draft-components/combo-autoselect
combo-autocomplete.tsx
combo-autoselect.tsx
87:118 
83:114 
view
25 x 2 src/draft-components/combo-eleven
src/draft-components/combo-filter
combo-eleven.tsx
combo-filter.tsx
78:108 
78:108 
view
21 x 2 src/draft-components/combo-noinput
src/draft-components/combo-readonly
combo-noinput.tsx
combo-readonly.tsx
107:130 
115:138 
view
21 x 2 src/draft-components/grid
src/draft-components/gridv2
grid.tsx
grid.tsx
409:431 
423:445 
view
20 x 2 src/studies/apg/toolbar/js
src/studies/tooltip/js
FormatToolbar.js
FormatToolbar.js
201:222 
196:217 
view
19 x 2 src/draft-components/combo-autocomplete
src/draft-components/combo-filter
combo-autocomplete.tsx
combo-filter.tsx
157:178 
143:164 
view
19 x 2 src/draft-components/combo-eleven
src/draft-components/combo-twelve
combo-eleven.tsx
combo-twelve.tsx
143:164 
147:168 
view
19 x 2 src/draft-components/grid
src/draft-components/gridv2
row.tsx
row.tsx
37:56 
37:56 
view
18 x 2 src/studies/apg/tabs/tabs-1/js
src/studies/apg/tabs/tabs-2/js
tabs.js
tabs.js
100:120 
105:125 
view
15 x 2 src/draft-components/grid
src/draft-components/gridv2
header-cell.tsx
header-cell.tsx
33:49 
35:51 
view
16 x 2 src/studies/apg/treeview/treeview-1/js
src/studies/apg/treeview/treeview-2/js
tree.js
treeLinks.js
201:225 
201:225 
view
14 x 2 src/draft-components/grid
src/draft-components/gridv2
grid.tsx
grid.tsx
254:268 
274:288 
view
14 x 2 src/studies/apg/toolbar/js
src/studies/tooltip/js
FormatToolbar.js
FormatToolbar.js
18:37 
18:37 
view
14 x 2 src/studies/apg/toolbar/js
src/studies/tooltip/js
FormatToolbar.js
FormatToolbar.js
90:104 
85:99 
view
14 x 2 src/studies/apg/treeview/treeview-1/js
src/studies/apg/treeview/treeview-2/js
tree.js
treeLinks.js
108:126 
108:126 
view
14 x 2 src/studies/apg/treeview/treeview-1/js
src/studies/apg/treeview/treeview-2/js
tree.js
treeLinks.js
128:145 
128:145 
view
13 x 2 src/draft-components/shared
src/shared
utils.ts
utils.ts
94:107 
146:159 
view
7 x 3 src/draft-components/tooltip-corner
src/draft-components/tooltip-control
src/draft-components/tooltip-escape
tooltip-corner.tsx
tooltip-control.tsx
tooltip-escape.tsx
53:67 
65:78 
67:80 
view
13 x 2 src/studies/apg/tabs/tabs-1/js
src/studies/apg/tabs/tabs-2/js
tabs.js
tabs.js
226:242 
226:242 
view