microsoft / workbooks
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
  • 3% duplication:
    • 59,431 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,883 duplicated lines
  • 180 duplicates
system3% (1,883 lines)
Duplication per Extension
cs3% (1,614 lines)
xaml5% (102 lines)
proj6% (32 lines)
tsx1% (31 lines)
vcxproj18% (26 lines)
ts<1% (25 lines)
css1% (20 lines)
cpp7% (14 lines)
html5% (12 lines)
cshtml5% (7 lines)
Duplication per Component (primary)
Agents/Xamarin.Interactive4% (400 lines)
Clients/Xamarin.Interactive.Client.Mac3% (249 lines)
Clients/Xamarin.Interactive.Client.Windows3% (198 lines)
Clients/CrossBrowser4% (172 lines)
Clients/Xamarin.Interactive.Client1% (106 lines)
Clients/Xamarin.Interactive.Client.Web2% (89 lines)
Agents/Xamarin.Interactive.Mac8% (88 lines)
CodeAnalysis/Xamarin.Interactive.CodeAnalysis2% (75 lines)
Clients/Xamarin.Interactive.Client.Desktop2% (72 lines)
Agents/Xamarin.Interactive.Forms.iOS26% (56 lines)
Agents/Xamarin.Interactive.iOS11% (52 lines)
build/Xamarin.Build2% (50 lines)
ClientIntegrations/Xamarin.Workbooks.Client.iOS10% (46 lines)
Clients/Xamarin.Interactive.Client.Console3% (45 lines)
Clients/Xamarin.Interactive.Client.Windows.ShellExtension10% (40 lines)
Agents/Xamarin.Interactive.Android5% (34 lines)
WorkbookApps/Xamarin.Workbooks.Mac17% (32 lines)
Agents/Xamarin.Interactive.Forms.Android11% (25 lines)
Agents/Xamarin.Interactive.Wpf6% (22 lines)
CodeAnalysis/Xamarin.Interactive.CodeAnalysis.Roslyn1% (18 lines)
Agents/Xamarin.Interactive.DotNetCore19% (8 lines)
Package5% (6 lines)
Agents/Xamarin.Interactive.Android.ActivityTrackerShim0% (0 lines)
Agents/Xamarin.Interactive.Console0% (0 lines)
Agents/Xamarin.Interactive.Forms0% (0 lines)
Clients0% (0 lines)
Clients/Xamarin.Interactive.Client.Mac.SimChecker0% (0 lines)
Clients/Xamarin.Interactive.MTouch0% (0 lines)
ROOT0% (0 lines)
Package/Windows0% (0 lines)
Tools/ApiDump0% (0 lines)
Tools/ILFixer0% (0 lines)
Tools/InstallerVerifier0% (0 lines)
Tools/Xamarin.CITooling0% (0 lines)
WorkbookApps0% (0 lines)
WorkbookApps/Xamarin.Workbooks.Android0% (0 lines)
WorkbookApps/Xamarin.Workbooks.DotNetCore0% (0 lines)
WorkbookApps/Xamarin.Workbooks.WebAssembly0% (0 lines)
WorkbookApps/Xamarin.Workbooks.Wpf0% (0 lines)
WorkbookApps/Xamarin.Workbooks.iOS0% (0 lines)
build0% (0 lines)

Duplication Between Components (50+ lines)

G Agents/Xamarin.Interactive.Mac Agents/Xamarin.Interactive.Mac Agents/Xamarin.Interactive.iOS Agents/Xamarin.Interactive.iOS Agents/Xamarin.Interactive.Mac--Agents/Xamarin.Interactive.iOS 90 ClientIntegrations/Xamarin.Workbooks.Client.iOS ClientIntegrations/Xamarin.Workbooks.Client.iOS Clients/Xamarin.Interactive.Client.Mac Clients/Xamarin.Interactive.Client.Mac ClientIntegrations/Xamarin.Workbooks.Client.iOS--Clients/Xamarin.Interactive.Client.Mac 68 Clients/Xamarin.Interactive.Client.Windows Clients/Xamarin.Interactive.Client.Windows Clients/Xamarin.Interactive.Client.Mac--Clients/Xamarin.Interactive.Client.Windows 50 Agents/Xamarin.Interactive Agents/Xamarin.Interactive Clients/Xamarin.Interactive.Client.Web Clients/Xamarin.Interactive.Client.Web Agents/Xamarin.Interactive--Clients/Xamarin.Interactive.Client.Web 52 Clients/Xamarin.Interactive.Client Clients/Xamarin.Interactive.Client Clients/Xamarin.Interactive.Client.Windows--Clients/Xamarin.Interactive.Client 51

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 180 duplicates...
Size#FoldersFilesLinesCode
36 x 2 Clients/Xamarin.Interactive.Client.Mac
Clients/Xamarin.Interactive.Client.Mac
SessionSplitViewController.cs
SessionViewController.cs
24:92 (90%)
24:92 (90%)
view
21 x 2 Clients/Xamarin.Interact...t/Client/AgentProcesses
Clients/Xamarin.Interact...t/Client/AgentProcesses
ConsoleAgentProcess.cs
DotNetCoreAgentProcess.cs
69:100 (40%)
49:81 (51%)
view
19 x 2 Agents/Xamarin.Interactive/Representations
Agents/Xamarin.Interactive/Representations
DictionaryInteractiveObject.cs
ReflectionInteractiveObject.cs
29:47 (33%)
27:45 (24%)
view
18 x 2 Clients/CrossBrowser/Xam...ssBrowser.Mac/Generated
Clients/CrossBrowser/Xam...ssBrowser.Wpf/Generated
NodeType.cs
NodeType.cs
18:35 (94%)
18:35 (94%)
view
17 x 2 Clients/Xamarin.Interact....Windows/AgentProcesses
Clients/Xamarin.Interact...t/Client/AgentProcesses
WpfAgentProcess.cs
DotNetCoreAgentProcess.cs
49:77 (44%)
53:81 (41%)
view
17 x 2 Clients/CrossBrowser/Xam...ssBrowser.Mac/Generated
Clients/CrossBrowser/Xam...ssBrowser.Wpf/Generated
CssRuleType.cs
CssRuleType.cs
18:34 (94%)
18:34 (94%)
view
17 x 2 Clients/Xamarin.Interact....Windows/AgentProcesses
Clients/Xamarin.Interact...t/Client/AgentProcesses
WpfAgentProcess.cs
ConsoleAgentProcess.cs
49:77 (44%)
73:100 (32%)
view
16 x 2 ClientIntegrations/Xamarin.Workbooks.Client.iOS
Clients/Xamarin.Interact...ient.Mac/AgentProcesses
iOSAgentProcess.cs
iOSAgentProcess.cs
264:279 (4%)
159:174 (10%)
view
16 x 2 Clients/Xamarin.Interact...t.Desktop/ViewInspector
Clients/Xamarin.Interact...ient.Windows/Converters
InspectTreeNode.cs
InspectViewToDisplayConverter.cs
37:58 (28%)
46:67 (47%)
view
16 x 2 Agents/Xamarin.Interactive/ProcessControl
build/Xamarin.Build
ProcessArguments.cs
Exec.cs
78:101 (14%)
59:82 (37%)
view
16 x 2 WorkbookApps/Xamarin.Workbooks.Mac
WorkbookApps/Xamarin.Workbooks.Mac
proj
BuildBundle.proj
BuildBundle.proj
30:45 (16%)
48:63 (16%)
view
14 x 2 Clients/Xamarin.Interactive.Client.Mac
Clients/Xamarin.Interactive.Client.Mac
MacHtmlResultRenderer.cs
MacHtmlResultRenderer.cs
202:222 (4%)
393:413 (4%)
view
14 x 2 Agents/Xamarin.Interactive.Android
Agents/Xamarin.Interactive.Mac
InspectorSupport.cs
UnifiedInspectorSupport.cs
51:74 (36%)
56:79 (38%)
view
13 x 2 Clients/CrossBrowser/Xam....CrossBrowser.Generator
Clients/CrossBrowser/Xam...ssBrowser.Mac/Generated
DomApi.cs
CssRuleType.cs
323:335 (5%)
22:34 (72%)
view
13 x 2 Clients/CrossBrowser/Xam....CrossBrowser.Generator
Clients/CrossBrowser/Xam...ssBrowser.Wpf/Generated
DomApi.cs
CssRuleType.cs
323:335 (5%)
22:34 (72%)
view
13 x 2 Clients/Xamarin.Interactive.Client.Console
Clients/Xamarin.Interactive.Client.Web/Hosting
ConsoleClientApp.cs
WebClientApp.cs
34:56 (41%)
45:67 (30%)
view
13 x 2 Agents/Xamarin.Interactive/Representations
Agents/Xamarin.Interactive/Representations
DictionaryInteractiveObject.cs
InteractiveObject.cs
29:41 (23%)
41:53 (19%)
view
13 x 2 Agents/Xamarin.Interactive.Forms.iOS
Agents/Xamarin.Interactive.Forms.iOS
iOSFormsInspectView.cs
iOSFormsInspectView.cs
133:147 (10%)
181:195 (10%)
view
13 x 2 Agents/Xamarin.Interactive/Representations
Agents/Xamarin.Interactive/Representations
InteractiveObject.cs
ReflectionInteractiveObject.cs
41:53 (19%)
27:39 (16%)
view
13 x 2 CodeAnalysis/Xamarin.Int.../CodeAnalysis/Resolving
CodeAnalysis/Xamarin.Int.../CodeAnalysis/Resolving
NativeDependencyResolver.cs
NativeDependencyResolver.cs
101:116 (6%)
147:162 (6%)
view
Duplicated Units
The list of top 9 duplicated units.
See data for all 9 unit duplicates...
Size#FoldersFilesLinesCode
13 x 3 Clients/Xamarin.Interact....Windows/AgentProcesses
Clients/Xamarin.Interact...t/Client/AgentProcesses
Clients/Xamarin.Interact...t/Client/AgentProcesses
WpfAgentProcess.cs
ConsoleAgentProcess.cs
DotNetCoreAgentProcess.cs
64:78 
87:101 
68:82 
view
9 x 2 Agents/Xamarin.Interactive.Android
Agents/Xamarin.Interactive.Mac
InspectorSupport.cs
UnifiedInspectorSupport.cs
51:60 
56:65 
view
9 x 2 Clients/Xamarin.Interactive.Client.Console
Clients/Xamarin.Interactive.Client.Web/Hosting
ConsoleClientApp.cs
WebClientApp.cs
41:51 
52:62 
view
8 x 2 Clients/CrossBrowser/Xam....CrossBrowser.Generator
Clients/CrossBrowser/Xam....CrossBrowser.Generator
JavaScriptCoreDomBinder.cs
MshtmlDomBinder.cs
40:48 
52:60 
view
7 x 2 ClientIntegrations/Xamarin.Workbooks.Client.iOS
ClientIntegrations/Xamarin.Workbooks.Client.iOS
SshCommands.cs
SshCommands.cs
174:181 
183:190 
view
7 x 2 Clients/Xamarin.Interactive.Client.Mac
Clients/Xamarin.Interactive.Client.Windows
Highlighter.cs
Highlighter.cs
152:160 
168:176 
view
6 x 2 Agents/Xamarin.Interactive/Client/AgentProcesses
Clients/Xamarin.Interactive.Client.Web/WebAssembly
AgentProcessTicket.cs
WebAssemblyAgentTicket.cs
49:55 
53:59 
view
6 x 2 Clients/Xamarin.Interact...eb/ClientApp/components
Clients/Xamarin.Interact...ient/ClientApp/workbook
MonacoCellEditor.tsx
code-editor.ts
327:336 
208:217 
view
6 x 2 CodeAnalysis/Xamarin.Int...ive.CodeAnalysis.Roslyn
CodeAnalysis/Xamarin.Int...ive.CodeAnalysis.Roslyn
AssignmentMonitorSyntaxRewriter.cs
AssignmentMonitorSyntaxRewriter.cs
95:101 
103:109 
view