Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce unused exports #164933

Closed
joyceerhl opened this issue Oct 28, 2022 · 2 comments
Closed

Reduce unused exports #164933

joyceerhl opened this issue Oct 28, 2022 · 2 comments
Assignees
Labels
engineering VS Code - Build / issue tracking / etc.

Comments

@joyceerhl
Copy link
Contributor

joyceerhl commented Oct 28, 2022

@rebornix and I were wondering if there is any dead code in the VS Code codebase, and one idea was to detect unused exports across the codebase, since unused variables are flagged by the compiler but unused exports are not.

I ran ts-unused-exports on our sources and generated the following list. I've already done a pass to remove some false positives but apologies if several remain.

NB: The primary purpose of this issue is to identify unused functions and classes which aren't being picked up by the compiler because they're exported and which can be safely deleted from our sources to reduce our bundle size. A secondary benefit is to remove unused types and interfaces, e.g. anything which was exported at one point and then ceased to be referenced from other files (which more impacts compile time for dev workflows and pipeline runs, and maybe TS server analysis time, but has no direct impact on bundle size since types are erased).

If you export a type or interface that is not currently actively imported, but is used in the public API of a class that you expose, then it's quite likely that you want to keep that type/interface exported and need not un-export it as part of this issue.

Please feel free to remove your assignment if you find that this isn't valuable.

Git blame Function File
@aeschli ✔️ IHoverContent src/vs/base/browser/ui/iconLabel/iconLabelHover.ts
@aeschli ✔️IIconRegistry src/vs/base/common/codicons.ts
@aeschli ✔️getClassNamesArray src/vs/base/common/codicons.ts
@aeschli ✔️ iconStartMarker src/vs/base/common/iconLabels.ts
@aeschli api ExtensionVirtualWorkspaceSupport src/vs/base/common/product.ts
@aeschli ✔️IIconFilter src/vs/base/test/common/iconLabels.test.ts
@aeschli ✔️cssEscape src/vs/editor/common/services/getIconClasses.ts
@aeschli api FoldingModelChangeEvent src/vs/editor/contrib/folding/browser/foldingModel.ts
@aeschli ✔️ID_INDENT_PROVIDER src/vs/editor/contrib/folding/browser/indentRangeProvider.ts
@aeschli ✔️RangesCollector src/vs/editor/contrib/folding/browser/indentRangeProvider.ts
@aeschli ✔️ID_SYNTAX_PROVIDER src/vs/editor/contrib/folding/browser/syntaxRangeProvider.ts
@aeschli ✔️RangesCollector src/vs/editor/contrib/folding/browser/syntaxRangeProvider.ts
@aeschli ✔️editorMarkerNavigationError src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@aeschli ✔️editorMarkerNavigationErrorHeader src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@aeschli ✔️editorMarkerNavigationWarning src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@aeschli ✔️editorMarkerNavigationInfo src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@aeschli ✔️editorMarkerNavigationInfoHeader src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@aeschli ✔️editorMarkerNavigationBackground src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@aeschli ✔️editorHoverWidgetHighlightForeground src/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts
@aeschli ✔️ editorSuggestWidgetBackground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetBorder src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetForeground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetSelectedForeground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetSelectedIconForeground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetSelectedBackground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetHighlightForeground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetHighlightFocusForeground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️editorSuggestWidgetStatusForeground src/vs/editor/contrib/suggest/browser/suggestWidget.ts
@aeschli ✔️suggestMoreInfoIcon src/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.ts
@aeschli api defineTheme src/vs/editor/standalone/browser/standaloneEditor.ts
@aeschli api setTheme src/vs/editor/standalone/browser/standaloneEditor.ts
@aeschli api getEncodedLanguageId src/vs/editor/standalone/browser/standaloneLanguages.ts
@aeschli api IEncodedLineTokens src/vs/editor/standalone/browser/standaloneLanguages.ts
@aeschli api EncodedTokensProvider src/vs/editor/standalone/browser/standaloneLanguages.ts
@aeschli api CodeActionContext src/vs/editor/standalone/browser/standaloneLanguages.ts
@aeschli api ShutdownEvent src/vs/platform/lifecycle/electron-browser/sharedProcessLifecycleService.ts
@aeschli api IIconsStyleSheet src/vs/platform/theme/browser/iconsStyleSheet.ts
@aeschli api IconIdentifier src/vs/platform/theme/common/iconRegistry.ts
@aeschli api IconDefaults src/vs/platform/theme/common/iconRegistry.ts
@aeschli api IconFontContribution src/vs/platform/theme/common/iconRegistry.ts
@aeschli api IThemingParticipant src/vs/platform/theme/common/themeService.ts
@aeschli ✔️ TOKEN_TYPE_WILDCARD src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️TOKEN_CLASSIFIER_LANGUAGE_SEPARATOR src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ CLASSIFIER_MODIFIER_SEPARATOR src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ TokenClassificationString src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ idPattern src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ selectorPattern src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ TokenSelector src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli api TokenTypeOrModifierContribution src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli api TokenStyleFunction src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli api TokenStyleDefaults src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli api SemanticTokenDefaultRule src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ Extensions src/vs/platform/theme/common/tokenClassificationRegistry.ts
@aeschli ✔️ TestFileIconTheme src/vs/platform/theme/test/common/testThemeService.ts
@aeschli ✔️ UnthemedProductIconTheme src/vs/platform/theme/test/common/testThemeService.ts
@aeschli api OpenCommandPipeArgs src/vs/workbench/api/node/extHostCLIServer.ts
@aeschli api OpenExternalCommandPipeArgs src/vs/workbench/api/node/extHostCLIServer.ts
@aeschli api StatusPipeArgs src/vs/workbench/api/node/extHostCLIServer.ts
@aeschli api ExtensionManagementPipeArgs src/vs/workbench/api/node/extHostCLIServer.ts
@aeschli ✔️ debugExceptionWidgetBorder src/vs/workbench/contrib/debug/browser/exceptionWidget.ts
@aeschli ✔️ debugExceptionWidgetBackground src/vs/workbench/contrib/debug/browser/exceptionWidget.ts
@aeschli ✔️ settingsGroupExpandedIcon src/vs/workbench/contrib/preferences/browser/preferencesIcons.ts
@aeschli ✔️ settingsGroupCollapsedIcon src/vs/workbench/contrib/preferences/browser/preferencesIcons.ts
@aeschli ✔️ settingsAddIcon src/vs/workbench/contrib/preferences/browser/preferencesIcons.ts
@aeschli ✔️ editorGutterAddedBackground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ editorGutterDeletedBackground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ minimapGutterModifiedBackground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ minimapGutterAddedBackground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ minimapGutterDeletedBackground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ overviewRulerModifiedForeground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ overviewRulerAddedForeground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@aeschli ✔️ overviewRulerDeletedForeground src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts
@lszomoru scmProviderSeparatorBorderColor src/vs/workbench/contrib/scm/browser/scmViewPane.ts
@aeschli ✔️ searchEditorTextInputBorder src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts
@aeschli ✔️ embeddedEditorBackground src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.ts
@aeschli ✔️ getWorkspaceIdentifier src/vs/workbench/services/configuration/test/browser/configurationService.test.ts
@aeschli ✔️ textmateColorSettingsSchemaId src/vs/workbench/services/themes/common/colorThemeSchema.ts
@aeschli ✔️ parseWithLocation src/vs/workbench/services/themes/common/plistParser.ts
@aeschli api ThemeChangeEvent src/vs/workbench/services/themes/common/themeExtensionPoints.ts
@aeschli api IThemeData src/vs/workbench/services/themes/common/themeExtensionPoints.ts
@aeschli api IThemeScopedColorCustomizations src/vs/workbench/services/themes/common/workbenchThemeService.ts
@aeschli api IThemeScopedTokenColorCustomizations src/vs/workbench/services/themes/common/workbenchThemeService.ts
@aeschli api IThemeScopedSemanticTokenColorCustomizations src/vs/workbench/services/themes/common/workbenchThemeService.ts
@aeschli api IThemeScopedExperimentalSemanticTokenColorCustomizations src/vs/workbench/services/themes/common/workbenchThemeService.ts
@aeschli api IExperimentalSemanticTokenColorCustomizations src/vs/workbench/services/themes/common/workbenchThemeService.ts
@aeschli api ITokenColorizationSetting src/vs/workbench/services/themes/common/workbenchThemeService.ts
@aeschli ✔️ ExtensionVersion src/vs/workbench/services/themes/common/workbenchThemeService.ts
@Tyriar ✔️ newTerminalIcon src/vs/workbench/contrib/terminal/browser/terminalIcons.ts
env src/vs/workbench/workbench.web.main.ts
window src/vs/workbench/workbench.web.main.ts
commands src/vs/workbench/workbench.web.main.ts
logger src/vs/workbench/workbench.web.main.ts
@meganrogge TaskDefinitionDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge TaskPresentationOptionsDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge ProcessExecutionOptionsDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge ProcessExecutionDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge ShellExecutionOptionsDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge ShellExecutionDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge TaskGroupDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge TaskFilterDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge TaskExecutionDTO src/vs/workbench/api/common/extHostTask.ts
@meganrogge VerifiedTask src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts
@alexr00
Copy link
Member

alexr00 commented Nov 1, 2022

For the workbench.web.api.ts file, all those are still needed.

For the other files attached to my name, I removed the export, but those symbols are all still used.

alexr00 added a commit that referenced this issue Nov 1, 2022
@meganrogge meganrogge removed their assignment Nov 3, 2022
meganrogge added a commit that referenced this issue Nov 3, 2022
meganrogge added a commit that referenced this issue Nov 3, 2022
@aeschli
Copy link
Contributor

aeschli commented Nov 4, 2022

I wenrt through the list. Removed the ones I marked with ✔️. I kept the ones I marked with 'api', as these are types that are part of an exported API and should stay available. They are also just types and interfaces, so have no impact on the built bits

Tyriar added a commit that referenced this issue Nov 11, 2022
@aeschli aeschli removed their assignment Dec 5, 2022
@alexr00 alexr00 assigned joyceerhl and lszomoru and unassigned alexr00 Dec 7, 2022
@lszomoru lszomoru added the engineering VS Code - Build / issue tracking / etc. label Dec 7, 2022
@lszomoru lszomoru removed their assignment Dec 7, 2022
@github-actions github-actions bot locked and limited conversation to collaborators Jan 22, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
engineering VS Code - Build / issue tracking / etc.
Projects
None yet
Development

No branches or pull requests

5 participants