microsoft / vscode-extension-samples
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
  • 17% duplication:
    • 8,432 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,452 duplicated lines
  • 69 duplicates
system17% (1,452 lines)
Duplication per Extension
ts15% (1,121 lines)
css58% (308 lines)
tsx46% (23 lines)
Duplication per Component (primary)
lsp-embedded-request-forwarding60% (243 lines)
lsp-embedded-language-service35% (160 lines)
tree-view-sample21% (151 lines)
custom-editor-sample14% (124 lines)
webview-view-sample44% (122 lines)
nodefs-provider-sample72% (118 lines)
webview-sample45% (118 lines)
lsp-log-streaming-sample54% (106 lines)
lsp-sample58% (106 lines)
vim-sample5% (56 lines)
quickinput-sample12% (42 lines)
notebook-renderer-react-sample45% (23 lines)
notebook-renderer-sample31% (23 lines)
source-control-sample3% (22 lines)
extension-terminal-sample30% (13 lines)
terminal-sample7% (13 lines)
lsp-multi-server-sample10% (12 lines)
authenticationprovider-sample0% (0 lines)
basic-multi-root-sample0% (0 lines)
call-hierarchy-sample0% (0 lines)
code-actions-sample0% (0 lines)
codelens-sample0% (0 lines)
comment-sample0% (0 lines)
completions-sample0% (0 lines)
configuration-sample0% (0 lines)
contentprovider-sample0% (0 lines)
decorator-sample0% (0 lines)
diagnostic-related-information-sample0% (0 lines)
document-editing-sample0% (0 lines)
fsconsumer-sample0% (0 lines)
fsprovider-sample0% (0 lines)
getting-started-sample0% (0 lines)
github-authentication-sample0% (0 lines)
helloworld-minimal-sample0% (0 lines)
helloworld-sample0% (0 lines)
helloworld-web-sample0% (0 lines)
i18n-sample0% (0 lines)
inline-completions0% (0 lines)
lsp-user-input-sample0% (0 lines)
lsp-web-extension-sample0% (0 lines)
product-icon-theme-sample0% (0 lines)
progress-sample0% (0 lines)
proposed-api-sample0% (0 lines)
semantic-tokens-sample0% (0 lines)
statusbar-sample0% (0 lines)
task-provider-sample0% (0 lines)
test-provider-sample0% (0 lines)
uri-handler-sample0% (0 lines)
virtual-document-sample0% (0 lines)
webpack-sample0% (0 lines)
webview-codicons-sample0% (0 lines)
welcome-view-content-sample0% (0 lines)

Duplication Between Components (50+ lines)

G lsp-embedded-language-service lsp-embedded-language-service lsp-embedded-request-forwarding lsp-embedded-request-forwarding lsp-embedded-language-service--lsp-embedded-request-forwarding 328 lsp-sample lsp-sample lsp-embedded-language-service--lsp-sample 52 lsp-log-streaming-sample lsp-log-streaming-sample lsp-embedded-language-service--lsp-log-streaming-sample 52 nodefs-provider-sample nodefs-provider-sample tree-view-sample tree-view-sample nodefs-provider-sample--tree-view-sample 237 webview-sample webview-sample webview-view-sample webview-view-sample webview-sample--webview-view-sample 236 custom-editor-sample custom-editor-sample custom-editor-sample--webview-view-sample 229 custom-editor-sample--webview-sample 221 lsp-log-streaming-sample--lsp-sample 198

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 69 duplicates...
Size#FoldersFilesLinesCode
77 x 2 custom-editor-sample/media
webview-view-sample/media
vscode.css
vscode.css
1:91 (100%)
1:91 (100%)
view
59 x 2 webview-sample/media
webview-view-sample/media
vscode.css
vscode.css
21:91 (76%)
21:91 (76%)
view
59 x 2 custom-editor-sample/media
webview-sample/media
vscode.css
vscode.css
21:91 (76%)
21:91 (76%)
view
50 x 2 lsp-embedded-request-forwarding/client/src
lsp-embedded-request-forwarding/client/src
embeddedSupport.ts
embeddedSupport.ts
58:111 (15%)
153:206 (15%)
view
45 x 2 lsp-log-streaming-sample/server/src
lsp-sample/server/src
server.ts
server.ts
65:138 (32%)
76:149 (30%)
view
43 x 2 nodefs-provider-sample/src
tree-view-sample/src
extension.ts
fileExplorer.ts
54:127 (26%)
189:262 (25%)
view
33 x 2 lsp-embedded-language-service/server/src
lsp-embedded-request-forwarding/client/src
embeddedSupport.ts
embeddedSupport.ts
95:132 (19%)
241:278 (10%)
view
29 x 2 nodefs-provider-sample/src
tree-view-sample/src
extension.ts
fileExplorer.ts
193:235 (17%)
68:110 (16%)
view
27 x 2 custom-editor-sample/media
webview-view-sample/media
reset.css
reset.css
1:30 (100%)
1:30 (100%)
view
27 x 2 webview-sample/media
webview-view-sample/media
reset.css
reset.css
1:30 (100%)
1:30 (100%)
view
27 x 2 custom-editor-sample/media
webview-sample/media
reset.css
reset.css
1:30 (100%)
1:30 (100%)
view
24 x 2 nodefs-provider-sample/src
tree-view-sample/src
extension.ts
fileExplorer.ts
151:193 (14%)
20:62 (14%)
view
24 x 2 lsp-embedded-language-service/server/src
lsp-embedded-request-forwarding/client/src
embeddedSupport.ts
embeddedSupport.ts
199:232 (14%)
381:414 (7%)
view
19 x 2 lsp-log-streaming-sample/server/src
lsp-sample/server/src
server.ts
server.ts
170:203 (13%)
181:214 (13%)
view
17 x 2 nodefs-provider-sample/src
tree-view-sample/src
extension.ts
fileExplorer.ts
20:49 (10%)
156:185 (9%)
view
15 x 2 source-control-sample/src
tree-view-sample/src
afs.ts
fileExplorer.ts
7:33 (42%)
11:36 (8%)
view
15 x 2 lsp-embedded-language-service/server/src
lsp-embedded-request-forwarding/client/src
embeddedSupport.ts
embeddedSupport.ts
27:42 (8%)
151:166 (4%)
view
14 x 2 notebook-renderer-react-sample/src/client
notebook-renderer-sample/src/client
index.tsx
index.ts
16:30 (70%)
18:32 (48%)
view
14 x 2 lsp-embedded-language-service/client/src
lsp-sample/client/src
extension.ts
extension.ts
16:39 (43%)
16:39 (41%)
view
14 x 2 quickinput-sample/src
quickinput-sample/src
multiStepInput.ts
multiStepInput.ts
230:244 (6%)
289:303 (6%)
view
Duplicated Units
The list of top 12 duplicated units.
See data for all 12 unit duplicates...
Size#FoldersFilesLinesCode
15 x 2 extension-terminal-sample/src
terminal-sample/src
extension.ts
extension.ts
43:58 
196:211 
view
14 x 3 nodefs-provider-sample/src
source-control-sample/src
tree-view-sample/src
extension.ts
afs.ts
fileExplorer.ts
150:168 
16:34 
19:37 
view
13 x 2 lsp-log-streaming-sample/server/src
lsp-sample/server/src
server.ts
server.ts
100:113 
111:124 
view
9 x 2 lsp-embedded-language-service/server/src
lsp-embedded-request-forwarding/client/src
embeddedSupport.ts
embeddedSupport.ts
216:225 
398:407 
view
9 x 2 nodefs-provider-sample/src
tree-view-sample/src
extension.ts
fileExplorer.ts
58:69 
193:204 
view
9 x 2 vim-sample/src
vim-sample/src
motions.ts
motions.ts
346:355 
364:373 
view
8 x 2 nodefs-provider-sample/src
tree-view-sample/src
extension.ts
fileExplorer.ts
178:188 
47:57 
view
7 x 3 custom-editor-sample/src
webview-sample/src
webview-view-sample/src
util.ts
extension.ts
extension.ts
1:8 
215:222 
116:123 
view
6 x 2 helloworld-minimal-sample
helloworld-web-sample/src/web
extension.js
extension.ts
11:27 
7:24 
view
6 x 2 helloworld-sample/src
proposed-api-sample/src
extension.ts
extension.ts
7:23 
3:16 
view
6 x 2 lsp-embedded-language-service/server/src
lsp-embedded-request-forwarding/client/src
embeddedSupport.ts
embeddedSupport.ts
227:233 
409:415 
view
6 x 2 source-control-sample/src
tree-view-sample/src
afs.ts
fileExplorer.ts
7:13 
11:17 
view