microsoft / appcenter-sdk-dotnet
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
  • 51% duplication:
    • 17,426 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 8,998 duplicated lines
  • 579 duplicates
system51% (8,998 lines)
Duplication per Extension
cs56% (7,823 lines)
xaml80% (912 lines)
axml42% (158 lines)
yaml8% (56 lines)
cmd22% (23 lines)
ps15% (14 lines)
cake1% (12 lines)
Duplication per Component (primary)
Apps/Contoso.Forms.Puppet86% (1,020 lines)
Apps/Contoso.Forms.Demo87% (1,000 lines)
SDK/AppCenterCrashes38% (751 lines)
SDK/AppCenter16% (688 lines)
Apps/Contoso.WinForms.Puppet.DotNetCore100% (604 lines)
Apps/Contoso.WinForms.Demo.DotNetCore100% (603 lines)
Apps/Contoso.WinForms.Puppet99% (599 lines)
Apps/Contoso.WinForms.Demo99% (598 lines)
Apps/Contoso.WinUI.Desktop.Demo96% (442 lines)
Apps/Contoso.WinUI.Desktop.Puppet96% (442 lines)
Apps/Contoso.WPF.Puppet95% (356 lines)
Apps/Contoso.WPF.Demo95% (355 lines)
Apps/Contoso.WPF.Puppet.DotNetCore97% (351 lines)
Apps/Contoso.WPF.Demo.DotNetCore97% (350 lines)
Apps/Contoso.Android.Puppet26% (222 lines)
SDK/AppCenterAnalytics35% (191 lines)
Apps/Contoso.UWP.Demo72% (93 lines)
Apps/Contoso.UWP.Puppet72% (93 lines)
swagger8% (56 lines)
Apps/Contoso.iOS.Puppet19% (48 lines)
SDK/AppCenterDistribute13% (46 lines)
Apps/Contoso.MacOS.Puppet17% (41 lines)
scripts21% (37 lines)
ROOT1% (12 lines)
Apps/Contoso.UtilClassLibrary0% (0 lines)
scripts/configuration0% (0 lines)

Duplication Between Components (50+ lines)

G Apps/Contoso.Forms.Demo Apps/Contoso.Forms.Demo Apps/Contoso.Forms.Puppet Apps/Contoso.Forms.Puppet Apps/Contoso.Forms.Demo--Apps/Contoso.Forms.Puppet 2014 Apps/Contoso.MacOS.Puppet Apps/Contoso.MacOS.Puppet Apps/Contoso.Forms.Demo--Apps/Contoso.MacOS.Puppet 50 Apps/Contoso.WinForms.Demo.DotNetCore Apps/Contoso.WinForms.Demo.DotNetCore Apps/Contoso.WinForms.Puppet.DotNetCore Apps/Contoso.WinForms.Puppet.DotNetCore Apps/Contoso.WinForms.Demo.DotNetCore--Apps/Contoso.WinForms.Puppet.DotNetCore 1204 Apps/Contoso.WinForms.Demo Apps/Contoso.WinForms.Demo Apps/Contoso.WinForms.Demo.DotNetCore--Apps/Contoso.WinForms.Demo 648 Apps/Contoso.WinForms.Puppet Apps/Contoso.WinForms.Puppet Apps/Contoso.WinForms.Demo.DotNetCore--Apps/Contoso.WinForms.Puppet 636 Apps/Contoso.WinForms.Puppet.DotNetCore--Apps/Contoso.WinForms.Puppet 650 Apps/Contoso.WinForms.Demo--Apps/Contoso.WinForms.Puppet 1180 Apps/Contoso.WinForms.Demo--Apps/Contoso.WinForms.Puppet.DotNetCore 636 Apps/Contoso.WinUI.Desktop.Demo Apps/Contoso.WinUI.Desktop.Demo Apps/Contoso.WinUI.Desktop.Puppet Apps/Contoso.WinUI.Desktop.Puppet Apps/Contoso.WinUI.Desktop.Demo--Apps/Contoso.WinUI.Desktop.Puppet 884 Apps/Contoso.WPF.Demo Apps/Contoso.WPF.Demo Apps/Contoso.WPF.Puppet Apps/Contoso.WPF.Puppet Apps/Contoso.WPF.Demo--Apps/Contoso.WPF.Puppet 686 Apps/Contoso.WPF.Puppet.DotNetCore Apps/Contoso.WPF.Puppet.DotNetCore Apps/Contoso.WPF.Demo--Apps/Contoso.WPF.Puppet.DotNetCore 592 Apps/Contoso.WPF.Demo--Apps/Contoso.WinUI.Desktop.Demo 170 Apps/Contoso.WPF.Demo--Apps/Contoso.WinUI.Desktop.Puppet 170 Apps/Contoso.WPF.Demo--Apps/Contoso.WinForms.Demo 84 Apps/Contoso.WPF.Demo--Apps/Contoso.WinForms.Puppet 80 Apps/Contoso.WPF.Demo--Apps/Contoso.WinForms.Puppet.DotNetCore 52 Apps/Contoso.WPF.Demo--Apps/Contoso.WinForms.Demo.DotNetCore 52 Apps/Contoso.WPF.Puppet--Apps/Contoso.WinUI.Desktop.Puppet 182 Apps/Contoso.WPF.Puppet--Apps/Contoso.WinUI.Desktop.Demo 182 Apps/Contoso.WPF.Puppet--Apps/Contoso.WinForms.Puppet 84 Apps/Contoso.WPF.Puppet--Apps/Contoso.WinForms.Demo 80 Apps/Contoso.WPF.Puppet--Apps/Contoso.WinForms.Demo.DotNetCore 52 Apps/Contoso.WPF.Puppet--Apps/Contoso.WinForms.Puppet.DotNetCore 52 Apps/Contoso.WPF.Demo.DotNetCore Apps/Contoso.WPF.Demo.DotNetCore Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WPF.Puppet.DotNetCore 680 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WPF.Demo 612 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WPF.Puppet 592 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WinUI.Desktop.Demo 166 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WinUI.Desktop.Puppet 166 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WinForms.Demo.DotNetCore 68 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WinForms.Puppet.DotNetCore 68 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WinForms.Puppet 52 Apps/Contoso.WPF.Demo.DotNetCore--Apps/Contoso.WinForms.Demo 52 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WPF.Puppet 614 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WinUI.Desktop.Demo 178 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WinUI.Desktop.Puppet 178 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WinForms.Demo.DotNetCore 68 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WinForms.Puppet.DotNetCore 68 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WinForms.Demo 52 Apps/Contoso.WPF.Puppet.DotNetCore--Apps/Contoso.WinForms.Puppet 52 Apps/Contoso.UWP.Demo Apps/Contoso.UWP.Demo Apps/Contoso.UWP.Puppet Apps/Contoso.UWP.Puppet Apps/Contoso.UWP.Demo--Apps/Contoso.UWP.Puppet 186 SDK/AppCenterAnalytics SDK/AppCenterAnalytics SDK/AppCenterCrashes SDK/AppCenterCrashes SDK/AppCenterAnalytics--SDK/AppCenterCrashes 154 SDK/AppCenterDistribute SDK/AppCenterDistribute SDK/AppCenterAnalytics--SDK/AppCenterDistribute 99 SDK/AppCenterCrashes--SDK/AppCenterDistribute 99 SDK/AppCenter SDK/AppCenter SDK/AppCenter--SDK/AppCenterCrashes 135 SDK/AppCenter--SDK/AppCenterAnalytics 135 SDK/AppCenter--SDK/AppCenterDistribute 96 Apps/Contoso.Android.Puppet Apps/Contoso.Android.Puppet Apps/Contoso.iOS.Puppet Apps/Contoso.iOS.Puppet Apps/Contoso.Android.Puppet--Apps/Contoso.iOS.Puppet 86 Apps/Contoso.Android.Puppet--Apps/Contoso.Forms.Puppet 58 Apps/Contoso.Android.Puppet--Apps/Contoso.Forms.Demo 58 Apps/Contoso.MacOS.Puppet--Apps/Contoso.iOS.Puppet 62

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 579 duplicates...
Size#FoldersFilesLinesCode
451 x 2 Apps/Contoso.WinForms.Demo.DotNetCore
Apps/Contoso.WinForms.Puppet.DotNetCore
MainForm.Designer.cs
MainForm.Designer.cs
1:590 (100%)
1:590 (100%)
view
440 x 2 Apps/Contoso.WinForms.Demo
Apps/Contoso.WinForms.Puppet
MainForm.Designer.cs
MainForm.Designer.cs
1:579 (100%)
1:579 (100%)
view
223 x 2 Apps/Contoso.WinUI.Deskt...toso.WinUI.Desktop.Demo
Apps/Contoso.WinUI.Deskt...so.WinUI.Desktop.Puppet
MainWindow.xaml.cs
MainWindow.xaml.cs
1:463 (100%)
1:465 (100%)
view
163 x 2 Apps/Contoso.WPF.Demo
Apps/Contoso.WPF.Puppet
MainWindow.xaml.cs
MainWindow.xaml.cs
26:348 (100%)
27:349 (100%)
view
162 x 2 Apps/Contoso.WPF.Demo.DotNetCore
Apps/Contoso.WPF.Puppet.DotNetCore
MainWindow.xaml.cs
MainWindow.xaml.cs
1:343 (100%)
1:343 (100%)
view
130 x 2 Apps/Contoso.Forms.Demo/....Forms.Demo/ModulePages
Apps/Contoso.Forms.Puppe...orms.Puppet/ModulePages
CrashesContentPage.xaml.cs
CrashesContentPage.xaml.cs
20:281 (100%)
20:281 (100%)
view
126 x 2 Apps/Contoso.WinUI.Deskt...toso.WinUI.Desktop.Demo
Apps/Contoso.WinUI.Deskt...so.WinUI.Desktop.Puppet
xaml
MainWindow.xaml
MainWindow.xaml
6:186 (96%)
6:186 (96%)
view
118 x 2 Apps/Contoso.WinForms.Demo.DotNetCore
Apps/Contoso.WinForms.Puppet.DotNetCore
MainForm.cs
MainForm.cs
1:242 (100%)
1:242 (100%)
view
117 x 2 Apps/Contoso.WinForms.Demo
Apps/Contoso.WinForms.Puppet
MainForm.cs
MainForm.cs
18:244 (100%)
18:244 (100%)
view
115 x 2 SDK/AppCenterCrashes/Mic....Crashes.MacOS.Bindings
SDK/AppCenterCrashes/Mic...er.Crashes.iOS.Bindings
ApiDefinition.cs
ApiDefinition.cs
45:263 (77%)
48:266 (78%)
view
109 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo
Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet
App.xaml.cs
App.xaml.cs
87:285 (72%)
93:291 (70%)
view
93 x 2 Apps/Contoso.WinForms.Demo.DotNetCore
Apps/Contoso.WinForms.Demo
MainForm.cs
MainForm.cs
56:242 (78%)
58:244 (79%)
view
93 x 2 Apps/Contoso.WinForms.Demo.DotNetCore
Apps/Contoso.WinForms.Puppet
MainForm.cs
MainForm.cs
56:242 (78%)
58:244 (79%)
view
93 x 2 Apps/Contoso.WinForms.Puppet.DotNetCore
Apps/Contoso.WinForms.Puppet
MainForm.cs
MainForm.cs
56:242 (78%)
58:244 (79%)
view
93 x 2 Apps/Contoso.WinForms.Demo
Apps/Contoso.WinForms.Puppet.DotNetCore
MainForm.cs
MainForm.cs
58:244 (79%)
56:242 (78%)
view
90 x 2 SDK/AppCenter/Microsoft.AppCenter.MacOS.Bindings
SDK/AppCenter/Microsoft.AppCenter.iOS.Bindings
ApiDefinition.cs
ApiDefinition.cs
16:191 (50%)
19:194 (50%)
view
79 x 2 Apps/Contoso.WPF.Demo.DotNetCore
Apps/Contoso.WPF.Puppet.DotNetCore
xaml
MainWindow.xaml
MainWindow.xaml
2:107 (98%)
2:107 (98%)
view
75 x 2 Apps/Contoso.WPF.Demo
Apps/Contoso.WPF.Puppet
xaml
MainWindow.xaml
MainWindow.xaml
12:113 (90%)
12:114 (90%)
view
71 x 2 SDK/AppCenter/Microsoft.AppCenter.MacOS.Bindings
SDK/AppCenter/Microsoft.AppCenter.iOS.Bindings
ApiDefinition.cs
ApiDefinition.cs
216:358 (39%)
219:361 (39%)
view
60 x 2 Apps/Contoso.WPF.Demo
Apps/Contoso.WPF.Puppet.DotNetCore
MainWindow.xaml.cs
MainWindow.xaml.cs
56:168 (36%)
55:167 (37%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 131 unit duplicates...
Size#FoldersFilesLinesCode
407 x 2 Apps/Contoso.WinForms.Demo.DotNetCore
Apps/Contoso.WinForms.Puppet.DotNetCore
MainForm.Designer.cs
MainForm.Designer.cs
32:551 
32:551 
view
396 x 2 Apps/Contoso.WinForms.Demo
Apps/Contoso.WinForms.Puppet
MainForm.Designer.cs
MainForm.Designer.cs
32:540 
32:540 
view
41 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo.Droid
Apps/Contoso.Forms.Puppe...toso.Forms.Puppet.Droid
FilePicker.cs
FilePicker.cs
80:123 
80:123 
view
41 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo.UWP
Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet.UWP
App.xaml.cs
App.xaml.cs
42:89 
42:89 
view
39 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo.Droid
Apps/Contoso.Forms.Puppe...toso.Forms.Puppet.Droid
FilePicker.cs
FilePicker.cs
33:78 
33:78 
view
37 x 2 Apps/Contoso.WPF.Puppet.DotNetCore
Apps/Contoso.WPF.Puppet
App.xaml.cs
App.xaml.cs
22:65 
22:65 
view
36 x 2 Apps/Contoso.WPF.Demo.DotNetCore
Apps/Contoso.WPF.Demo
App.xaml.cs
App.xaml.cs
21:65 
22:66 
view
34 x 2 SDK/AppCenter/Microsoft.AppCenter.MacOS
SDK/AppCenter/Microsoft.AppCenter.iOS
MacOSHttpClientAdapter.cs
IosHttpClientAdapter.cs
22:56 
22:56 
view
33 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo
Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet
App.xaml.cs
App.xaml.cs
170:204 
176:210 
view
32 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo
Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet
App.xaml.cs
App.xaml.cs
211:243 
217:249 
view
32 x 2 Apps/Contoso.UWP.Demo
Apps/Contoso.UWP.Puppet
MainPage.xaml.cs
MainPage.xaml.cs
65:97 
65:97 
view
32 x 2 Apps/Contoso.WinUI.Deskt...toso.WinUI.Desktop.Demo
Apps/Contoso.WinUI.Deskt...so.WinUI.Desktop.Puppet
MainWindow.xaml.cs
MainWindow.xaml.cs
40:72 
42:74 
view
31 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo
Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet
App.xaml.cs
App.xaml.cs
250:281 
256:287 
view
29 x 2 Apps/Contoso.WinUI.Deskt...toso.WinUI.Desktop.Demo
Apps/Contoso.WinUI.Deskt...so.WinUI.Desktop.Puppet
App.xaml.cs
App.xaml.cs
104:137 
105:138 
view
27 x 2 Apps/Contoso.Forms.Demo/Contoso.Forms.Demo.UWP
Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet.UWP
App.xaml.cs
App.xaml.cs
96:138 
96:138 
view
27 x 4 Apps/Contoso.WPF.Demo.DotNetCore
Apps/Contoso.WPF.Puppet.DotNetCore
Apps/Contoso.WinForms.Demo.DotNetCore
Apps/Contoso.WinForms.Puppet.DotNetCore
App.xaml.cs
App.xaml.cs
Program.cs
Program.cs
91:123 
91:123 
47:79 
46:78 
view
26 x 2 Apps/Contoso.UWP.Demo
Apps/Contoso.UWP.Puppet
App.xaml.cs
App.xaml.cs
52:93 
53:94 
view
25 x 2 SDK/AppCenterCrashes/Mic...AppCenter.Crashes.MacOS
SDK/AppCenterCrashes/Mic...t.AppCenter.Crashes.iOS
Crashes.cs
Crashes.cs
214:239 
222:247 
view
24 x 2 Apps/Contoso.Forms.Demo/....Forms.Demo/ModulePages
Apps/Contoso.Forms.Puppe...orms.Puppet/ModulePages
CrashesContentPage.xaml.cs
CrashesContentPage.xaml.cs
44:70 
44:70 
view
24 x 2 Apps/Contoso.WPF.Demo.DotNetCore
Apps/Contoso.WPF.Puppet.DotNetCore
MainWindow.xaml.cs
MainWindow.xaml.cs
33:57 
33:57 
view