microsoft / Ironclad
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
  • 41% duplication:
    • 44,776 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 18,509 duplicated lines
  • 622 duplicates
system41% (18,509 lines)
Duplication per Extension
cs58% (16,037 lines)
asm38% (1,362 lines)
cpp11% (726 lines)
h7% (115 lines)
ccproj100% (104 lines)
inc15% (50 lines)
fs1% (39 lines)
vcxproj26% (34 lines)
py3% (28 lines)
ps13% (14 lines)
Duplication per Component (primary)
ironclad-apps/tools/NuBuild98% (7,445 lines)
ironclad-apps/tools/NuBuild298% (7,445 lines)
ironclad-apps/src/Checked19% (2,253 lines)
ironclad-apps/src/Clients15% (474 lines)
ironclad-apps/tools/DafnyCC3% (96 lines)
ironfleet/src/IronSHTServer77% (91 lines)
ironfleet/src/IronLockServer82% (87 lines)
ironfleet/src/IronRSLCounterClient57% (83 lines)
ironfleet/src/IronSHTClient17% (80 lines)
ironfleet/src/Dafny8% (78 lines)
ironfleet/src/IronRSLKVClient42% (77 lines)
ironfleet/src/TestIoFramework59% (68 lines)
ironclad-apps/tools/DafnySpec1% (56 lines)
ironfleet/tools/scripts4% (35 lines)
ironfleet/src/IronfleetCommon28% (27 lines)
ironclad-apps/tools/standalone19% (27 lines)
ironfleet/src/CreateIronServiceCerts15% (24 lines)
ironclad-apps/tools/BoogieAsm<1% (16 lines)
ironclad-apps3% (14 lines)
ironfleet/src/IronRSLKVServer4% (14 lines)
ironclad-apps/tools/Dafny1% (12 lines)
ironclad-apps/tools/LineCount18% (7 lines)
ironclad-apps/boot0% (0 lines)
ironclad-apps/src/Dafny0% (0 lines)
ironclad-apps/src/DafnyTestDriver0% (0 lines)
ironclad-apps/tools/Beat0% (0 lines)
ironclad-apps/tools/SymDiff0% (0 lines)
ironclad-apps/tools/scripts0% (0 lines)
ironfleet/src/IronRSLClient0% (0 lines)
ironfleet/src/IronRSLCounterServer0% (0 lines)
ironfleet/src/RedisClient0% (0 lines)
ironfleet/tools/DepGraph0% (0 lines)

Duplication Between Components (50+ lines)

G ironclad-apps/tools/NuBuild ironclad-apps/tools/NuBuild ironclad-apps/tools/NuBuild2 ironclad-apps/tools/NuBuild2 ironclad-apps/tools/NuBuild--ironclad-apps/tools/NuBuild2 14872 ironfleet/src/Dafny ironfleet/src/Dafny ironfleet/src/IronSHTServer ironfleet/src/IronSHTServer ironfleet/src/Dafny--ironfleet/src/IronSHTServer 156 ironfleet/src/IronLockServer ironfleet/src/IronLockServer ironfleet/src/Dafny--ironfleet/src/IronLockServer 106 ironfleet/src/TestIoFramework ironfleet/src/TestIoFramework ironfleet/src/Dafny--ironfleet/src/TestIoFramework 82 ironfleet/src/IronRSLKVClient ironfleet/src/IronRSLKVClient ironfleet/src/Dafny--ironfleet/src/IronRSLKVClient 62 ironfleet/src/IronSHTServer--ironfleet/src/TestIoFramework 96 ironfleet/src/IronRSLCounterClient ironfleet/src/IronRSLCounterClient ironfleet/src/IronRSLCounterClient--ironfleet/src/IronRSLKVClient 152 ironfleet/src/IronSHTClient ironfleet/src/IronSHTClient ironfleet/src/IronRSLCounterClient--ironfleet/src/IronSHTClient 78 ironfleet/src/IronRSLKVClient--ironfleet/src/IronSHTClient 64 ironfleet/src/IronRSLKVClient--ironfleet/src/IronSHTServer 62 ironfleet/src/IronLockServer--ironfleet/src/TestIoFramework 136 ironfleet/src/IronLockServer--ironfleet/src/IronSHTServer 134 ironclad-apps/src/Clients ironclad-apps/src/Clients ironfleet/src/IronfleetCommon ironfleet/src/IronfleetCommon ironclad-apps/src/Clients--ironfleet/src/IronfleetCommon 54 ironclad-apps/tools/DafnyCC ironclad-apps/tools/DafnyCC ironclad-apps/tools/DafnySpec ironclad-apps/tools/DafnySpec ironclad-apps/tools/DafnyCC--ironclad-apps/tools/DafnySpec 52

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 622 duplicates...
Size#FoldersFilesLinesCode
268 x 2 ironclad-apps/tools/NuBuild/ItemCacheTool
ironclad-apps/tools/NuBuild2/ItemCacheTool
Program.cs
Program.cs
1:623 (100%)
1:623 (100%)
view
265 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Scheduler.cs
Scheduler.cs
1:839 (100%)
1:839 (100%)
view
214 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Program.cs
Program.cs
1:449 (100%)
1:449 (100%)
view
203 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudExecutionRequest.cs
CloudExecutionRequest.cs
1:540 (100%)
1:540 (100%)
view
192 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudExecutionReport.cs
CloudExecutionReport.cs
1:530 (100%)
1:530 (100%)
view
156 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Repository.cs
Repository.cs
1:564 (100%)
1:564 (100%)
view
147 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
ItemCacheMultiplexer.cs
ItemCacheMultiplexer.cs
1:580 (100%)
1:580 (100%)
view
143 x 2 ironclad-apps/tools/NuBuild/AzureManager
ironclad-apps/tools/NuBuild2/AzureManager
Program.cs
Program.cs
1:313 (100%)
1:313 (100%)
view
142 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
DafnyTransformBaseVerb.cs
DafnyTransformBaseVerb.cs
1:280 (100%)
1:280 (100%)
view
140 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
VerificationResultSummaryVerb.cs
VerificationResultSummaryVerb.cs
1:245 (100%)
1:245 (100%)
view
140 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
VerificationResult.cs
VerificationResult.cs
1:264 (100%)
1:264 (100%)
view
136 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
BoogieAsmDepBase.cs
BoogieAsmDepBase.cs
1:293 (100%)
1:293 (100%)
view
130 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudExecutionQueue.cs
CloudExecutionQueue.cs
1:373 (100%)
1:373 (100%)
view
125 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
VerbRunner.cs
VerbRunner.cs
1:417 (100%)
1:417 (100%)
view
121 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Job.cs
Job.cs
1:273 (100%)
1:273 (100%)
view
118 x 2 ironclad-apps/tools/NuBuild/AzureManager
ironclad-apps/tools/NuBuild2/AzureManager
ServiceConfiguration.cs
ServiceConfiguration.cs
1:367 (100%)
1:367 (100%)
view
117 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Presentater.cs
Presentater.cs
1:295 (100%)
1:295 (100%)
view
109 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
BoogieVerb.cs
BoogieVerb.cs
34:209 (88%)
34:209 (88%)
view
108 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
IroncladAppVerb.cs
IroncladAppVerb.cs
1:195 (100%)
1:195 (100%)
view
106 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
ProcessInvokeAsyncWorker.cs
ProcessInvokeAsyncWorker.cs
1:293 (100%)
1:293 (100%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 387 unit duplicates...
Size#FoldersFilesLinesCode
139 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Program.cs
Program.cs
90:234 
90:234 
view
121 x 2 ironclad-apps/tools/NuBuild/ItemCacheTool
ironclad-apps/tools/NuBuild2/ItemCacheTool
Program.cs
Program.cs
408:580 
408:580 
view
103 x 2 ironclad-apps/tools/NuBuild/ItemCacheTool
ironclad-apps/tools/NuBuild2/ItemCacheTool
Program.cs
Program.cs
28:155 
28:155 
view
96 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Program.cs
Program.cs
324:451 
324:451 
view
85 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
VerificationResultSummaryVerb.cs
VerificationResultSummaryVerb.cs
96:196 
96:196 
view
81 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
ProcessInvoker.cs
ProcessInvoker.cs
71:173 
71:173 
view
80 x 2 ironclad-apps/tools/NuBuild/AzureManager
ironclad-apps/tools/NuBuild2/AzureManager
Program.cs
Program.cs
56:169 
56:169 
view
80 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Scheduler.cs
Scheduler.cs
457:564 
457:564 
view
77 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudExecutionRequest.cs
CloudExecutionRequest.cs
337:428 
337:428 
view
75 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudExecutionReport.cs
CloudExecutionReport.cs
377:465 
377:465 
view
69 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Presentation.cs
Presentation.cs
60:129 
60:129 
view
66 x 2 ironclad-apps/tools/NuBuild/CloudQueueTool
ironclad-apps/tools/NuBuild2/CloudQueueTool
Program.cs
Program.cs
25:107 
25:107 
view
63 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
IroncladAppVerb.cs
IroncladAppVerb.cs
39:114 
39:114 
view
61 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudSubmitter.cs
CloudSubmitter.cs
72:155 
72:155 
view
59 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
Scheduler.cs
Scheduler.cs
717:792 
717:792 
view
56 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
CloudExecutionQueue.cs
CloudExecutionQueue.cs
300:376 
300:376 
view
51 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
VerbRunner.cs
VerbRunner.cs
127:199 
127:199 
view
50 x 2 ironclad-apps/tools/NuBuild/CloudExecutionWorker
ironclad-apps/tools/NuBuild2/CloudExecutionWorker
CloudExecutionEngine.cs
CloudExecutionEngine.cs
150:224 
150:224 
view
50 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
BoogieAsmDepBase.cs
BoogieAsmDepBase.cs
123:202 
123:202 
view
50 x 2 ironclad-apps/tools/NuBuild/NuBuild
ironclad-apps/tools/NuBuild2/NuBuild
PathNormalizer.cs
PathNormalizer.cs
44:116 
44:116 
view