Visual Studio Code
Unit Size

Intro
  • Unit size measurements show the distribution of size of units of code (methods, functions...).
  • Units are classified in four categories based on their size (lines of code): 1-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units).
  • You should aim at keeping units small (< 20 lines). Long units may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
Unit Size Overall
  • There are 22,035 units with 268,738 lines of code in units (43.6% of code).
    • 121 very long units (17,896 lines of code)
    • 493 long units (32,864 lines of code)
    • 2,580 medium size units (77,933 lines of code)
    • 4,617 small units (67,206 lines of code)
    • 14,224 very small units (72,839 lines of code)
6% | 12% | 28% | 25% | 27%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
ts6% | 12% | 29% | 24% | 27%
js13% | 10% | 18% | 29% | 27%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Logical Component
primary logical decomposition
src6% | 12% | 28% | 24% | 27%
extensions5% | 9% | 32% | 26% | 25%
Legend:
101+
51-100
21-50
11-20
1-10
src logical decomposition
src/vs/workbench6% | 12% | 29% | 25% | 26%
src/vs/editor7% | 14% | 27% | 23% | 27%
src/vs/base10% | 11% | 25% | 23% | 29%
src/vs/platform4% | 9% | 29% | 27% | 30%
src/vs/code17% | 24% | 25% | 20% | 11%
extensions/emmet/src15% | 9% | 42% | 22% | 8%
extensions/html-language-features/server17% | 9% | 28% | 24% | 19%
extensions/json-language-features/server39% | 0% | 25% | 17% | 17%
extensions/css-language-features/server34% | 0% | 20% | 26% | 19%
extensions/json-language-features/client30% | 16% | 16% | 14% | 22%
extensions/github/src43% | 0% | 9% | 22% | 24%
extensions/git/src1% | 12% | 36% | 24% | 24%
extensions/vscode-web-playground/src6% | 3% | 28% | 24% | 37%
extensions/typescript-language-features/src0% | 7% | 31% | 31% | 29%
extensions/npm/src0% | 10% | 32% | 30% | 26%
extensions/php-language-features/src0% | 23% | 41% | 19% | 15%
extensions/microsoft-authentication/src0% | 15% | 45% | 17% | 21%
extensions/merge-conflict/src0% | 15% | 41% | 17% | 26%
src/vs0% | 4% | 25% | 35% | 34%
extensions/extension-editing/src0% | 23% | 33% | 17% | 25%
extensions/github-browser/src0% | 7% | 39% | 29% | 23%
extensions/html-language-features/client0% | 15% | 44% | 21% | 18%
extensions/search-result/src0% | 49% | 47% | 0% | 3%
extensions/grunt/src0% | 24% | 7% | 32% | 34%
src0% | 11% | 22% | 32% | 33%
extensions/jake/src0% | 22% | 7% | 29% | 40%
extensions/gulp/src0% | 21% | 7% | 30% | 40%
extensions/markdown-language-features/src0% | 2% | 20% | 42% | 33%
extensions/css-language-features/client0% | 15% | 35% | 29% | 19%
extensions/configuration-editing/src0% | 19% | 46% | 12% | 21%
extensions/github-authentication/src0% | 0% | 46% | 14% | 38%
extensions/debug-server-ready/src0% | 0% | 50% | 27% | 21%
extensions/image-preview/src0% | 0% | 21% | 33% | 45%
extensions/markdown-language-features/preview-src0% | 0% | 24% | 25% | 49%
extensions/image-preview/media0% | 0% | 35% | 43% | 21%
extensions/debug-auto-launch/src0% | 0% | 18% | 62% | 19%
extensions0% | 0% | 64% | 35% | 0%
extensions/git-ui/src0% | 0% | 0% | 94% | 5%
extensions/python/src0% | 0% | 0% | 0% | 100%
Legend:
101+
51-100
21-50
11-20
1-10
src/workbench logical decomposition
workbench/contrib6% | 13% | 30% | 24% | 24%
workbench/services5% | 12% | 30% | 26% | 25%
workbench/browser8% | 12% | 29% | 27% | 22%
workbench/api5% | 5% | 24% | 25% | 38%
workbench/electron-browser18% | 0% | 40% | 24% | 16%
workbench/common0% | 0% | 33% | 25% | 41%
workbench/electron-sandbox0% | 0% | 18% | 28% | 53%
workbench0% | 0% | 0% | 28% | 71%
Legend:
101+
51-100
21-50
11-20
1-10
src/editor logical decomposition
editor/common8% | 16% | 27% | 19% | 28%
editor/contrib6% | 12% | 29% | 28% | 21%
editor/browser4% | 14% | 26% | 20% | 33%
editor/standalone6% | 15% | 17% | 27% | 32%
editor0% | 0% | 0% | 100% | 0%
Legend:
101+
51-100
21-50
11-20
1-10
src/base logical decomposition
common12% | 10% | 25% | 23% | 28%
browser6% | 13% | 25% | 22% | 32%
parts13% | 10% | 21% | 21% | 33%
node13% | 11% | 29% | 28% | 17%
worker0% | 0% | 17% | 48% | 33%
Legend:
101+
51-100
21-50
11-20
1-10
extensions logical decomposition
src/vs6% | 12% | 28% | 24% | 27%
extensions/json-language-features35% | 7% | 21% | 15% | 20%
extensions/emmet15% | 9% | 42% | 22% | 8%
extensions/html-language-features14% | 10% | 31% | 24% | 19%
extensions/css-language-features21% | 5% | 25% | 27% | 19%
extensions/github43% | 0% | 9% | 22% | 24%
extensions/git1% | 12% | 36% | 24% | 24%
extensions/vscode-web-playground6% | 3% | 28% | 24% | 37%
extensions/typescript-language-features0% | 7% | 31% | 31% | 29%
extensions/npm0% | 10% | 32% | 30% | 26%
extensions/php-language-features0% | 23% | 41% | 19% | 15%
extensions/microsoft-authentication0% | 15% | 45% | 17% | 21%
extensions/merge-conflict0% | 15% | 41% | 17% | 26%
extensions/extension-editing0% | 23% | 33% | 17% | 25%
extensions/github-browser0% | 7% | 39% | 29% | 23%
extensions/search-result0% | 49% | 47% | 0% | 3%
extensions/grunt0% | 24% | 7% | 32% | 34%
extensions/jake0% | 22% | 7% | 29% | 40%
extensions/gulp0% | 21% | 7% | 30% | 40%
extensions/markdown-language-features0% | 2% | 21% | 41% | 35%
extensions/configuration-editing0% | 19% | 46% | 12% | 21%
extensions/github-authentication0% | 0% | 46% | 14% | 38%
extensions/image-preview0% | 0% | 25% | 36% | 38%
extensions/debug-server-ready0% | 0% | 50% | 27% | 21%
extensions/debug-auto-launch0% | 0% | 18% | 62% | 19%
extensions0% | 0% | 64% | 35% | 0%
extensions/git-ui0% | 0% | 0% | 94% | 5%
extensions/python0% | 0% | 0% | 0% | 100%
Legend:
101+
51-100
21-50
11-20
1-10
Alternative Visuals
Longest Units
Top 50 longest units
Unit# linesMcCabe index# params
export function createApiFactoryAndRegisterActors()
in src/vs/workbench/api/common/extHost.api.impl.ts
638 29 1
export function registerCommands()
in src/vs/workbench/contrib/debug/browser/debugCommands.ts
412 58 0
export function startServer()
in extensions/html-language-features/server/src/htmlServer.ts
356 113 2
Lexer.prototype.token = function()
in src/vs/base/common/marked/marked.js
261 61 2
private _buildDomNode()
in src/vs/editor/contrib/find/findWidget.ts
260 36 0
function webviewPreloads()
in src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts
249 50 0
constructor()
in src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts
244 54 3
constructor()
in src/vs/editor/common/config/editorOptions.ts
237 1 0
private async executeInTerminal()
in src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts
237 60 4
export function startServer()
in extensions/json-language-features/server/src/jsonServer.ts
235 51 2
private _myTokenize()
in src/vs/editor/standalone/common/monarch/monarchLexer.ts
224 71 4
export function startServer()
in extensions/css-language-features/server/src/cssServer.ts
215 44 2
function createWebviewManager()
in src/vs/workbench/contrib/webview/browser/pre/main.js
213 61 1
function createLineBreaksFromPreviousLineBreaks()
in src/vs/editor/common/viewModel/monospaceLineBreaksComputer.ts
204 47 7
private registerListeners()
in src/vs/workbench/contrib/debug/browser/debugSession.ts
204 58 0
protected createEditor()
in src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts
202 27 1
function registerCloseEditorCommands()
in src/vs/workbench/browser/parts/editor/editorCommands.ts
199 32 0
(function ()()
in src/vs/base/common/scanCode.ts
195 1 1
export async function main()
in src/vs/code/node/cli.ts
185 44 1
private getGroupedTasks()
in src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts
179 47 1
constructor()
in src/vs/editor/browser/controller/textAreaHandler.ts
176 26 3
function _getNativeMap()
in src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts
176 1 0
private registerTabListeners()
in src/vs/workbench/browser/parts/editor/tabsTitleControl.ts
168 37 4
public getActiveIndentGuide()
in src/vs/editor/common/model/textModel.ts
166 44 3
private getUI()
in src/vs/base/parts/quickinput/browser/quickInput.ts
162 23 0
constructor()
in src/vs/editor/browser/controller/textAreaInput.ts
162 36 2
private async renderBody()
in src/vs/workbench/contrib/extensions/browser/extensionEditor.ts
161 2 1
private _registerModelEvents()
in src/vs/editor/common/viewModel/viewModelImpl.ts
155 25 0
export function startClient()
in extensions/json-language-features/client/src/jsonClient.ts
153 22 3
private applyDefaultLayout()
in src/vs/workbench/browser/layout.ts
153 48 2
private ComputeRecursionPoint()
in src/vs/base/common/diff/diff.ts
152 39 7
protected renderContents()
in src/vs/workbench/contrib/feedback/browser/feedback.ts
152 20 1
(function ()()
in src/vs/base/common/scanCode.ts
151 3 1
private doExecuteTask()
in src/vs/workbench/contrib/tasks/node/processTaskSystem.ts
151 31 2
InlineLexer.prototype.output = function()
in src/vs/base/common/marked/marked.js
150 48 1
function rbTreeDelete()
in src/vs/editor/common/model/intervalTree.ts
145 28 2
private evaluateSingleVariable()
in src/vs/workbench/services/configurationResolver/common/variableResolver.ts
145 53 4
constructor()
in src/vs/base/browser/ui/findinput/findInput.ts
143 27 4
public getEditOperations()
in src/vs/editor/contrib/linesOperations/moveLinesCommand.ts
141 30 2
private provideCompletionItemsInternal()
in extensions/emmet/src/defaultCompletionProvider.ts
140 63 3
private registerListeners()
in src/vs/code/electron-main/app.ts
140 18 0
private static _computeMinimapLayout()
in src/vs/editor/common/config/editorOptions.ts
140 39 2
public applyEdits()
in src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts
139 40 3
private registerKeybindingEditorActions()
in src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts
139 13 0
private doOpen()
in src/vs/platform/windows/electron-main/windowsMainService.ts
138 38 7
export function renderMarkdown()
in src/vs/base/browser/markdownRenderer.ts
136 31 3
private _watch()
in src/vs/platform/files/node/watcher/unix/chokidarWatcherService.ts
136 44 2
function parse()
in src/vs/workbench/services/preferences/common/preferencesModels.ts
135 25 3
export function isValidLocationForEmmetAbbreviation()
in extensions/emmet/src/abbreviationActions.ts
134 66 6
private setEventHandlers()
in src/vs/code/electron-browser/issue/issueReporterMain.ts
134 37 0