microsoft / AppConsult-WinAppsModernizationWorkshop
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
  • 36% duplication:
    • 19,546 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 7,092 duplicated lines
  • 1,865 duplicates
system36% (7,092 lines)
Duplication per Extension
cs28% (3,938 lines)
xaml53% (3,154 lines)
Duplication per Component (primary)
Exercise5/01-Start94% (614 lines)
Exercise5/02-End94% (614 lines)
Exercise4/02-End94% (614 lines)
Exercise1/02-End95% (561 lines)
Exercise1/01-Start95% (561 lines)
Exercise4/01-Start93% (542 lines)
Exercise3/02-End93% (540 lines)
Exercise2/02-End94% (524 lines)
Exercise3/01-Start94% (524 lines)
Exercise2/01-Start94% (521 lines)
Samples-NetCore/MusicManager8% (449 lines)
Samples-NetCore/BookLibrary18% (356 lines)
Samples-NetCore/InformationManager12% (340 lines)
Samples-NetCore/DotNetPad8% (232 lines)
Samples-NetCore/PhotoStore11% (100 lines)

Duplication Between Components (50+ lines)

G Exercise4/02-End Exercise4/02-End Exercise5/02-End Exercise5/02-End Exercise4/02-End--Exercise5/02-End 1228 Exercise5/01-Start Exercise5/01-Start Exercise4/02-End--Exercise5/01-Start 1228 Exercise5/01-Start--Exercise5/02-End 1228 Exercise1/01-Start Exercise1/01-Start Exercise1/02-End Exercise1/02-End Exercise1/01-Start--Exercise1/02-End 1122 Exercise2/01-Start Exercise2/01-Start Exercise1/01-Start--Exercise2/01-Start 1042 Exercise2/02-End Exercise2/02-End Exercise1/01-Start--Exercise2/02-End 1042 Exercise3/01-Start Exercise3/01-Start Exercise1/01-Start--Exercise3/01-Start 1026 Exercise4/01-Start Exercise4/01-Start Exercise1/01-Start--Exercise4/01-Start 1023 Exercise3/02-End Exercise3/02-End Exercise1/01-Start--Exercise3/02-End 1019 Exercise1/01-Start--Exercise5/02-End 989 Exercise1/01-Start--Exercise5/01-Start 989 Exercise1/01-Start--Exercise4/02-End 989 Exercise1/02-End--Exercise2/01-Start 1042 Exercise1/02-End--Exercise2/02-End 1042 Exercise1/02-End--Exercise3/01-Start 1026 Exercise1/02-End--Exercise4/01-Start 1023 Exercise1/02-End--Exercise3/02-End 1019 Exercise1/02-End--Exercise4/02-End 989 Exercise1/02-End--Exercise5/02-End 989 Exercise1/02-End--Exercise5/01-Start 989 Exercise4/01-Start--Exercise5/02-End 1066 Exercise4/01-Start--Exercise5/01-Start 1066 Exercise4/01-Start--Exercise4/02-End 1066 Exercise3/02-End--Exercise5/01-Start 1048 Exercise3/02-End--Exercise4/02-End 1048 Exercise3/02-End--Exercise4/01-Start 1048 Exercise3/02-End--Exercise5/02-End 1048 Exercise2/01-Start--Exercise2/02-End 1042 Exercise2/01-Start--Exercise3/01-Start 1026 Exercise2/01-Start--Exercise4/01-Start 1023 Exercise2/01-Start--Exercise3/02-End 1019 Exercise2/01-Start--Exercise5/02-End 989 Exercise2/01-Start--Exercise4/02-End 989 Exercise2/01-Start--Exercise5/01-Start 989 Exercise2/02-End--Exercise3/01-Start 1032 Exercise2/02-End--Exercise4/01-Start 1029 Exercise2/02-End--Exercise3/02-End 1025 Exercise2/02-End--Exercise5/01-Start 995 Exercise2/02-End--Exercise5/02-End 995 Exercise2/02-End--Exercise4/02-End 995 Exercise3/01-Start--Exercise3/02-End 1041 Exercise3/01-Start--Exercise4/01-Start 1015 Exercise3/01-Start--Exercise5/02-End 1009 Exercise3/01-Start--Exercise5/01-Start 1009 Exercise3/01-Start--Exercise4/02-End 1009 Samples-NetCore/DotNetPad Samples-NetCore/DotNetPad Samples-NetCore/MusicManager Samples-NetCore/MusicManager Samples-NetCore/DotNetPad--Samples-NetCore/MusicManager 457 Samples-NetCore/InformationManager Samples-NetCore/InformationManager Samples-NetCore/DotNetPad--Samples-NetCore/InformationManager 154 Samples-NetCore/BookLibrary Samples-NetCore/BookLibrary Samples-NetCore/BookLibrary--Samples-NetCore/InformationManager 278 Samples-NetCore/BookLibrary--Samples-NetCore/MusicManager 128 Samples-NetCore/InformationManager--Samples-NetCore/MusicManager 270

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,865 duplicates...
Size#FoldersFilesLinesCode
78 x 2 Exercise3/01-Start/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise2/02-End/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/01-Start/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise4/01-Start/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/02-End/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise2/02-End/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise4/01-Start/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/02-End/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise4/01-Start/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise4/02-End/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise2/02-End/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/02-End/ContosoExpenses/Views
Exercise4/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/02-End/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise2/02-End/ContosoExpenses/Views
Exercise3/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise4/02-End/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/01-Start/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise2/02-End/ContosoExpenses/Views
Exercise3/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise5/01-Start/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise2/02-End/ContosoExpenses/Views
Exercise4/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
78 x 2 Exercise3/01-Start/ContosoExpenses/Views
Exercise4/01-Start/ContosoExpenses/Views
xaml
ExpenseDetail.xaml
ExpenseDetail.xaml
1:141 (100%)
1:141 (100%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 29 unit duplicates...
Size#FoldersFilesLinesCode
46 x 3 Exercise4/02-End/ContosoExpenses
Exercise5/01-Start/ContosoExpenses
Exercise5/02-End/ContosoExpenses
TimelineService.cs
TimelineService.cs
TimelineService.cs
16:72 
16:72 
16:72 
view
39 x 2 Samples-NetCore/DotNetPa...d.Presentation/Controls
Samples-NetCore/MusicMan...r.Presentation/Controls
Flyout.cs
Flyout.cs
43:86 
44:87 
view
29 x 10 Exercise1/01-Start/ContosoExpenses.Data/Services
Exercise1/02-End/ContosoExpenses.Data/Services
Exercise2/01-Start/ContosoExpenses.Data/Services
Exercise2/02-End/ContosoExpenses.Data/Services
Exercise3/01-Start/ContosoExpenses.Data/Services
Exercise3/02-End/ContosoExpenses.Data/Services
Exercise4/01-Start/ContosoExpenses.Data/Services
Exercise4/02-End/ContosoExpenses.Data/Services
Exercise5/01-Start/ContosoExpenses.Data/Services
Exercise5/02-End/ContosoExpenses.Data/Services
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
84:119 
84:119 
84:119 
84:119 
84:119 
84:119 
84:119 
84:119 
84:119 
84:119 
view
22 x 2 Samples-NetCore/BookLibr...ry.Library.Presentation
Samples-NetCore/InformationManager/Assembler
App.xaml.cs
App.xaml.cs
38:61 
42:65 
view
16 x 10 Exercise1/01-Start/ContosoExpenses.Data/Services
Exercise1/02-End/ContosoExpenses.Data/Services
Exercise2/01-Start/ContosoExpenses.Data/Services
Exercise2/02-End/ContosoExpenses.Data/Services
Exercise3/01-Start/ContosoExpenses.Data/Services
Exercise3/02-End/ContosoExpenses.Data/Services
Exercise4/01-Start/ContosoExpenses.Data/Services
Exercise4/02-End/ContosoExpenses.Data/Services
Exercise5/01-Start/ContosoExpenses.Data/Services
Exercise5/02-End/ContosoExpenses.Data/Services
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
64:82 
64:82 
64:82 
64:82 
64:82 
64:82 
64:82 
64:82 
64:82 
64:82 
view
15 x 5 Exercise3/02-End/ContosoExpenses/Views
Exercise4/01-Start/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
AddNewExpense.xaml.cs
AddNewExpense.xaml.cs
AddNewExpense.xaml.cs
AddNewExpense.xaml.cs
AddNewExpense.xaml.cs
37:54 
38:55 
38:55 
38:55 
38:55 
view
13 x 10 Exercise1/01-Start/ContosoExpenses/Views
Exercise1/02-End/ContosoExpenses/Views
Exercise2/01-Start/ContosoExpenses/Views
Exercise2/02-End/ContosoExpenses/Views
Exercise3/01-Start/ContosoExpenses/Views
Exercise3/02-End/ContosoExpenses/Views
Exercise4/01-Start/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
ExpensesList.xaml.cs
26:40 
26:40 
26:40 
26:40 
26:40 
26:40 
26:40 
26:40 
26:40 
26:40 
view
11 x 10 Exercise1/01-Start/ContosoExpenses/ViewModels
Exercise1/02-End/ContosoExpenses/ViewModels
Exercise2/01-Start/ContosoExpenses/ViewModels
Exercise2/02-End/ContosoExpenses/ViewModels
Exercise3/01-Start/ContosoExpenses/ViewModels
Exercise3/02-End/ContosoExpenses/ViewModels
Exercise4/01-Start/ContosoExpenses/ViewModels
Exercise4/02-End/ContosoExpenses/ViewModels
Exercise5/01-Start/ContosoExpenses/ViewModels
Exercise5/02-End/ContosoExpenses/ViewModels
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
ExpensesListViewModel.cs
74:88 
74:88 
74:88 
74:88 
74:88 
74:88 
74:88 
74:88 
74:88 
74:88 
view
11 x 3 Exercise4/02-End/ContosoExpenses
Exercise5/01-Start/ContosoExpenses
Exercise5/02-End/ContosoExpenses
TimelineService.cs
TimelineService.cs
TimelineService.cs
74:89 
74:89 
74:89 
view
10 x 2 Samples-NetCore/DotNetPad/DotNetPad.Presentation
Samples-NetCore/MusicMan...sicManager.Presentation
App.xaml.cs
App.xaml.cs
78:88 
120:130 
view
10 x 2 Samples-NetCore/MusicMan...ager.Presentation/Views
Samples-NetCore/MusicMan...ager.Presentation/Views
PlaylistView.xaml.cs
TranscodingListView.xaml.cs
93:103 
64:74 
view
9 x 10 Exercise1/01-Start/ContosoExpenses/Converters
Exercise1/02-End/ContosoExpenses/Converters
Exercise2/01-Start/ContosoExpenses/Converters
Exercise2/02-End/ContosoExpenses/Converters
Exercise3/01-Start/ContosoExpenses/Converters
Exercise3/02-End/ContosoExpenses/Converters
Exercise4/01-Start/ContosoExpenses/Converters
Exercise4/02-End/ContosoExpenses/Converters
Exercise5/01-Start/ContosoExpenses/Converters
Exercise5/02-End/ContosoExpenses/Converters
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
CostToHeightConverter.cs
9:19 
9:19 
9:19 
9:19 
9:19 
9:19 
9:19 
9:19 
9:19 
9:19 
view
9 x 10 Exercise1/01-Start/ContosoExpenses
Exercise1/02-End/ContosoExpenses
Exercise2/01-Start/ContosoExpenses
Exercise2/02-End/ContosoExpenses
Exercise3/01-Start/ContosoExpenses
Exercise3/02-End/ContosoExpenses
Exercise4/01-Start/ContosoExpenses
Exercise4/02-End/ContosoExpenses
Exercise5/01-Start/ContosoExpenses
Exercise5/02-End/ContosoExpenses
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
ViewModelLocator.cs
11:22 
11:22 
11:22 
11:22 
11:22 
11:22 
11:22 
11:22 
11:22 
11:22 
view
9 x 4 Exercise4/01-Start/ContosoExpenses/ViewModels
Exercise4/02-End/ContosoExpenses/ViewModels
Exercise5/01-Start/ContosoExpenses/ViewModels
Exercise5/02-End/ContosoExpenses/ViewModels
AddNewExpenseViewModel.cs
AddNewExpenseViewModel.cs
AddNewExpenseViewModel.cs
AddNewExpenseViewModel.cs
79:90 
16:27 
16:27 
16:27 
view
9 x 3 Exercise4/02-End/ContosoExpenses/ViewModels
Exercise5/01-Start/ContosoExpenses/ViewModels
Exercise5/02-End/ContosoExpenses/ViewModels
ExpensesDetailViewModel.cs
ExpensesDetailViewModel.cs
ExpensesDetailViewModel.cs
36:47 
36:47 
36:47 
view
8 x 10 Exercise1/01-Start/ContosoExpenses/Views
Exercise1/02-End/ContosoExpenses/Views
Exercise2/01-Start/ContosoExpenses/Views
Exercise2/02-End/ContosoExpenses/Views
Exercise3/01-Start/ContosoExpenses/Views
Exercise3/02-End/ContosoExpenses/Views
Exercise4/01-Start/ContosoExpenses/Views
Exercise4/02-End/ContosoExpenses/Views
Exercise5/01-Start/ContosoExpenses/Views
Exercise5/02-End/ContosoExpenses/Views
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
MainWindow.xaml.cs
26:34 
26:34 
26:34 
26:34 
26:34 
26:34 
26:34 
26:34 
26:34 
26:34 
view
8 x 2 Samples-NetCore/DotNetPa...d.Presentation/Controls
Samples-NetCore/MusicMan...r.Presentation/Controls
Flyout.cs
Flyout.cs
110:118 
114:122 
view
7 x 10 Exercise1/01-Start/ContosoExpenses.Data/Services
Exercise1/02-End/ContosoExpenses.Data/Services
Exercise2/01-Start/ContosoExpenses.Data/Services
Exercise2/02-End/ContosoExpenses.Data/Services
Exercise3/01-Start/ContosoExpenses.Data/Services
Exercise3/02-End/ContosoExpenses.Data/Services
Exercise4/01-Start/ContosoExpenses.Data/Services
Exercise4/02-End/ContosoExpenses.Data/Services
Exercise5/01-Start/ContosoExpenses.Data/Services
Exercise5/02-End/ContosoExpenses.Data/Services
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
19:26 
19:26 
19:26 
19:26 
19:26 
19:26 
19:26 
19:26 
19:26 
19:26 
view
7 x 10 Exercise1/01-Start/ContosoExpenses.Data/Services
Exercise1/02-End/ContosoExpenses.Data/Services
Exercise2/01-Start/ContosoExpenses.Data/Services
Exercise2/02-End/ContosoExpenses.Data/Services
Exercise3/01-Start/ContosoExpenses.Data/Services
Exercise3/02-End/ContosoExpenses.Data/Services
Exercise4/01-Start/ContosoExpenses.Data/Services
Exercise4/02-End/ContosoExpenses.Data/Services
Exercise5/01-Start/ContosoExpenses.Data/Services
Exercise5/02-End/ContosoExpenses.Data/Services
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
28:35 
28:35 
28:35 
28:35 
28:35 
28:35 
28:35 
28:35 
28:35 
28:35 
view
7 x 10 Exercise1/01-Start/ContosoExpenses.Data/Services
Exercise1/02-End/ContosoExpenses.Data/Services
Exercise2/01-Start/ContosoExpenses.Data/Services
Exercise2/02-End/ContosoExpenses.Data/Services
Exercise3/01-Start/ContosoExpenses.Data/Services
Exercise3/02-End/ContosoExpenses.Data/Services
Exercise4/01-Start/ContosoExpenses.Data/Services
Exercise4/02-End/ContosoExpenses.Data/Services
Exercise5/01-Start/ContosoExpenses.Data/Services
Exercise5/02-End/ContosoExpenses.Data/Services
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
DatabaseService.cs
37:44 
37:44 
37:44 
37:44 
37:44 
37:44 
37:44 
37:44 
37:44 
37:44 
view