microsoft / BotFramework-BlogSamples
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
  • 20% duplication:
    • 8,325 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,679 duplicated lines
  • 222 duplicates
system20% (1,679 lines)
Duplication per Extension
cs18% (911 lines)
js19% (472 lines)
html43% (167 lines)
ts33% (75 lines)
htm67% (54 lines)
Duplication per Component (primary)
blog-samples/CSharp16% (612 lines)
SDKV4-Samples/dotnet_core30% (303 lines)
StackOverflow-Bot/StackCode80% (238 lines)
SDKV4-Samples/js28% (164 lines)
docs-samples/Node71% (148 lines)
StackOverflow-Bot/StackBot9% (102 lines)
docs-samples/V419% (62 lines)
docs-samples/CSharp21% (34 lines)
StackOverflow-Bot/DialogAnalyzerFunc3% (16 lines)
SDKV4-Samples0% (0 lines)
ROOT0% (0 lines)
blog-samples/Node0% (0 lines)
docs-samples/v3Node0% (0 lines)
docs-samples/web-chat-speech0% (0 lines)

Duplication Between Components (50+ lines)

G blog-samples/CSharp blog-samples/CSharp docs-samples/CSharp docs-samples/CSharp blog-samples/CSharp--docs-samples/CSharp 274 StackOverflow-Bot/StackBot StackOverflow-Bot/StackBot StackOverflow-Bot/StackCode StackOverflow-Bot/StackCode StackOverflow-Bot/StackBot--StackOverflow-Bot/StackCode 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 222 duplicates...
Size#FoldersFilesLinesCode
75 x 2 StackOverflow-Bot/StackCode/out/src/bot
StackOverflow-Bot/StackCode/src/bot
bot.html
bot.html
1:91 (100%)
1:91 (100%)
view
31 x 2 SDKV4-Samples/js/PromptUsersForInput
SDKV4-Samples/js/stateBot
index.js
index.js
37:90 (68%)
37:93 (68%)
view
30 x 2 docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
basicNote-intentDialog.js
basicNote.js
73:118 (30%)
55:100 (28%)
view
25 x 2 blog-samples/CSharp/Bot-...Feedback-Sample/Dialogs
blog-samples/CSharp/Qna-.../Qna-Rich-Cards/Dialogs
QnADialog.cs
QnaDialog.cs
1:54 (69%)
1:80 (100%)
view
24 x 2 SDKV4-Samples/dotnet_core/ComplexDialogBot
SDKV4-Samples/dotnet_core/DialogInterruptionsBot
ComplexDialogBot.cs
DialogInterruptionsBot.cs
115:151 (17%)
218:254 (10%)
view
21 x 2 StackOverflow-Bot/StackCode/out/src
StackOverflow-Bot/StackCode/src
extension.js
extension.ts
59:82 (28%)
74:97 (29%)
view
17 x 2 StackOverflow-Bot/StackBot/static
StackOverflow-Bot/StackCode/out/src/bot
index.html
bot.html
7:29 (51%)
13:36 (22%)
view
17 x 2 blog-samples/CSharp/Scor...e/ScorableBot/App_Start
docs-samples/CSharp/Simp...-Notes-Sample/App_Start
WebApiConfig.cs
WebApiConfig.cs
1:31 (100%)
1:31 (100%)
view
17 x 2 docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
basicNote-intentDialog.js
basicNote.js
126:149 (17%)
112:135 (15%)
view
17 x 2 blog-samples/CSharp/Bot-...edback-Sample/App_Start
docs-samples/CSharp/Simp...-Notes-Sample/App_Start
WebApiConfig.cs
WebApiConfig.cs
1:31 (100%)
1:31 (100%)
view
17 x 2 StackOverflow-Bot/StackBot/static
StackOverflow-Bot/StackCode/src/bot
index.html
bot.html
7:29 (51%)
13:36 (22%)
view
17 x 2 StackOverflow-Bot/StackBot/lib
StackOverflow-Bot/StackBot/lib
attachments.js
attachments.js
16:36 (11%)
148:168 (11%)
view
17 x 2 SDKV4-Samples/js/DialogPromptBot
SDKV4-Samples/js/stateBot
index.js
index.js
37:82 (38%)
37:68 (37%)
view
17 x 2 blog-samples/CSharp/Cust...-Custom-State/App_Start
blog-samples/CSharp/Luis...-Scorable-Qna/App_Start
WebApiConfig.cs
WebApiConfig.cs
1:34 (100%)
1:34 (100%)
view
17 x 2 blog-samples/CSharp/Cust...ustom-State/Controllers
blog-samples/CSharp/Cust...ustom-State/Controllers
MessagesController.cs
MessagesController.cs
1:57 (100%)
1:57 (100%)
view
17 x 2 SDKV4-Samples/js/DialogPromptBot
SDKV4-Samples/js/PromptUsersForInput
index.js
index.js
37:82 (38%)
37:65 (37%)
view
17 x 2 blog-samples/CSharp/Bot-...back-Sample/Controllers
blog-samples/CSharp/Qna-...-Rich-Cards/Controllers
MessagesController.cs
MessagesController.cs
1:57 (100%)
1:58 (100%)
view
17 x 2 blog-samples/CSharp/Azur...mple.AzureSql/App_Start
blog-samples/CSharp/Luis...-Scorable-Qna/App_Start
WebApiConfig.cs
WebApiConfig.cs
1:34 (100%)
1:34 (100%)
view
17 x 2 blog-samples/CSharp/Qna-...na-Rich-Cards/App_Start
docs-samples/CSharp/Simp...-Notes-Sample/App_Start
WebApiConfig.cs
WebApiConfig.cs
1:31 (100%)
1:31 (100%)
view
17 x 2 blog-samples/CSharp/Cust...ustom-State/Controllers
blog-samples/CSharp/Luis...corable-Qna/Controllers
MessagesController.cs
MessagesController.cs
1:57 (100%)
1:57 (100%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 22 unit duplicates...
Size#FoldersFilesLinesCode
25 x 2 blog-samples/CSharp/Bot-...Feedback-Sample/Dialogs
blog-samples/CSharp/Qna-.../Qna-Rich-Cards/Dialogs
QnADialog.cs
QnaDialog.cs
20:55 
21:81 
view
18 x 6 blog-samples/CSharp/Bot-...back-Sample/Controllers
blog-samples/CSharp/Cust...ustom-State/Controllers
blog-samples/CSharp/Cust...ustom-State/Controllers
blog-samples/CSharp/Luis...corable-Qna/Controllers
blog-samples/CSharp/Qna-...-Rich-Cards/Controllers
docs-samples/CSharp/Simp...otes-Sample/Controllers
MessagesController.cs
MessagesController.cs
MessagesController.cs
MessagesController.cs
MessagesController.cs
MessagesController.cs
31:58 
31:58 
31:58 
31:58 
32:59 
32:59 
view
17 x 2 SDKV4-Samples/dotnet_core/ComplexDialogBot
SDKV4-Samples/dotnet_core/DialogInterruptionsBot
ComplexDialogBot.cs
DialogInterruptionsBot.cs
225:246 
339:360 
view
17 x 9 blog-samples/CSharp/Azur...mple.AzureSql/App_Start
blog-samples/CSharp/Bot-...edback-Sample/App_Start
blog-samples/CSharp/Cust...-Custom-State/App_Start
blog-samples/CSharp/Cust...-Custom-State/App_Start
blog-samples/CSharp/Luis...-Scorable-Qna/App_Start
blog-samples/CSharp/Qna-...na-Rich-Cards/App_Start
blog-samples/CSharp/Scor...e/ScorableBot/App_Start
blog-samples/CSharp/Triv...ple/TriviaBot/App_Start
docs-samples/CSharp/Simp...-Notes-Sample/App_Start
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
WebApiConfig.cs
12:35 
9:32 
12:35 
12:35 
12:35 
9:32 
9:32 
11:34 
9:32 
view
16 x 3 docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
basicNote-intentDialog.js
basicNote-intentDialog.js
basicNote.js
126:146 
157:178 
112:132 
view
15 x 2 StackOverflow-Bot/DialogAnalyzerFunc/Services
StackOverflow-Bot/DialogAnalyzerFunc/Services
ComputerVisionService.cs
TextAnalyticsService.cs
26:43 
19:36 
view
13 x 2 blog-samples/CSharp/FacebookHandover/Primary
blog-samples/CSharp/FacebookHandover/Secondary
Startup.cs
Startup.cs
45:61 
45:61 
view
12 x 2 blog-samples/CSharp/Bot-...back-Sample/Controllers
blog-samples/CSharp/Qna-...-Rich-Cards/Controllers
MessagesController.cs
MessagesController.cs
17:29 
17:30 
view
12 x 3 blog-samples/CSharp/Cust...ustom-State/Controllers
blog-samples/CSharp/Cust...ustom-State/Controllers
blog-samples/CSharp/Luis...corable-Qna/Controllers
MessagesController.cs
MessagesController.cs
MessagesController.cs
17:29 
17:29 
17:29 
view
12 x 2 docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
basicNote-intentDialog.js
basicNote.js
102:119 
84:101 
view
11 x 2 blog-samples/CSharp/Triv...chSample/TriviaBot/Luis
blog-samples/CSharp/Triv...chSample/TriviaBot/Luis
LuisEntity.cs
LuisIntent.cs
124:137 
81:94 
view
11 x 2 docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
basicNote-intentDialog.js
basicNote.js
73:88 
55:70 
view
10 x 2 blog-samples/CSharp/Triv...ample/TriviaBot/Runtime
blog-samples/CSharp/Triv...ample/TriviaBot/Runtime
Responses.cs
Responses.cs
22:33 
86:97 
view
10 x 2 blog-samples/CSharp/Triv...ample/TriviaBot/Runtime
blog-samples/CSharp/Triv...ample/TriviaBot/Runtime
Responses.cs
Responses.cs
262:273 
275:286 
view
10 x 2 docs-samples/Node/basics-naturalLanguage
docs-samples/Node/basics-naturalLanguage
basicNote-intentDialog.js
basicNote.js
89:101 
71:83 
view
9 x 3 SDKV4-Samples/dotnet_core/ComplexDialogBot
SDKV4-Samples/dotnet_core/DialogInterruptionsBot
SDKV4-Samples/dotnet_core/DialogPromptBot
Startup.cs
Startup.cs
Startup.cs
27:38 
27:38 
29:39 
view
9 x 2 SDKV4-Samples/dotnet_core/PromptUsersForInput
SDKV4-Samples/dotnet_core/StateBot
CustomPromptBot.cs
StateBot.cs
40:50 
35:45 
view
9 x 2 SDKV4-Samples/dotnet_core/PromptUsersForInput
SDKV4-Samples/dotnet_core/StateBot
Startup.cs
Startup.cs
28:38 
29:39 
view
8 x 2 blog-samples/CSharp/Azur...zureSql/SqlStateService
blog-samples/CSharp/BotS...teExport/BotStateExport
SqlBotDataEntity.cs
TableBotDataStore.cs
80:88 
218:226 
view
7 x 2 blog-samples/CSharp/Scor...ableBot/Dialogs/Balance
blog-samples/CSharp/Scor...Bot/Dialogs/MakePayment
ScorableCheckBalance.cs
ScorableMakePayment.cs
44:53 
44:53 
view