microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.37k stars 28.61k forks source link

Reduce unused exports #164941

Open joyceerhl opened 1 year ago

joyceerhl commented 1 year ago

@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
@sandy081 IButtonWithDropdownOptions src/vs/base/browser/ui/button/button.ts
@sandy081 PartMatches src/vs/base/browser/ui/keybindingLabel/keybindingLabel.ts
@sandy081 Matches src/vs/base/browser/ui/keybindingLabel/keybindingLabel.ts
@sandy081 defaultStyles src/vs/base/browser/ui/selectBox/selectBox.ts
@sandy081 ExtractErrorType src/vs/base/node/zip.ts
@sandy081 IInspectValue src/vs/platform/configuration/common/configurationModels.ts
@sandy081 IPolicy src/vs/platform/configuration/common/configurationRegistry.ts
@sandy081 IConfigurationDefaultOverride src/vs/platform/configuration/common/configurationRegistry.ts
@sandy081 reportTelemetry src/vs/platform/extensionManagement/common/abstractExtensionManagementService.ts
@sandy081 isIExtensionIdentifier src/vs/platform/extensionManagement/common/extensionManagement.ts
@sandy081 IGalleryExtensionIdentifier src/vs/platform/extensionManagement/common/extensionManagement.ts
@sandy081 PreferencesLabel src/vs/platform/extensionManagement/common/extensionManagement.ts
@sandy081 isAlpineLinux src/vs/platform/extensionManagement/common/extensionManagementUtil.ts
@sandy081 WEB_EXTENSION_RESOURCE_END_POINT src/vs/platform/extensionResourceLoader/common/extensionResourceLoader.ts
@sandy081 ICommand src/vs/platform/extensions/common/extensions.ts
@sandy081 IConfigurationProperty src/vs/platform/extensions/common/extensions.ts
@sandy081 IDebugger src/vs/platform/extensions/common/extensions.ts
@sandy081 IGrammar src/vs/platform/extensions/common/extensions.ts
@sandy081 IJSONValidation src/vs/platform/extensions/common/extensions.ts
@sandy081 ILanguage src/vs/platform/extensions/common/extensions.ts
@sandy081 IMenu src/vs/platform/extensions/common/extensions.ts
@sandy081 ISnippet src/vs/platform/extensions/common/extensions.ts
@sandy081 ITheme src/vs/platform/extensions/common/extensions.ts
@sandy081 IColor src/vs/platform/extensions/common/extensions.ts
@sandy081 isIExtensionIdentifier src/vs/platform/extensions/common/extensions.ts
@sandy081 Entry src/vs/platform/files/common/inMemoryFilesystemProvider.ts
@sandy081 IStartArguments src/vs/platform/launch/electron-main/launchMainService.ts
@sandy081 FileLogger src/vs/platform/log/common/fileLog.ts
@sandy081 NullLogger src/vs/platform/log/common/log.ts
@sandy081 NodeRequestOptions src/vs/platform/request/node/requestService.ts
@sandy081 UseDefaultProfileFlags src/vs/platform/userDataProfile/common/userDataProfile.ts
@sandy081 EmptyWindowWorkspaceIdentifier src/vs/platform/userDataProfile/common/userDataProfile.ts
@sandy081 UserDataProfilesObject src/vs/platform/userDataProfile/common/userDataProfile.ts
@sandy081 IMergeResult src/vs/platform/userDataSync/common/globalStateMerge.ts
@sandy081 IGlobalStateResourcePreview src/vs/platform/userDataSync/common/globalStateSync.ts
@sandy081 parseKeybindings src/vs/platform/userDataSync/common/keybindingsMerge.ts
@sandy081 IMergeResult src/vs/platform/userDataSync/common/settingsMerge.ts
@sandy081 areSame src/vs/platform/userDataSync/common/settingsMerge.ts
@sandy081 IMergeResult src/vs/platform/userDataSync/common/tasksMerge.ts
@sandy081 merge src/vs/platform/userDataSync/common/tasksMerge.ts
@sandy081 IMergeResult src/vs/platform/userDataSync/common/userDataProfilesManifestMerge.ts
@sandy081 IUserDataProfileManifestResourceMergeResult src/vs/platform/userDataSync/common/userDataProfilesManifestSync.ts
@sandy081 IUserDataProfilesManifestResourcePreview src/vs/platform/userDataSync/common/userDataProfilesManifestSync.ts
@sandy081 IStorageValue src/vs/platform/userDataSync/common/userDataSyncProfilesStorageService.ts
@sandy081 LogLevel src/vs/workbench/workbench.web.main.ts
@sandy081 IFilterViewPaneOptions src/vs/workbench/browser/parts/views/viewPane.ts
@sandy081 NotificationHandle src/vs/workbench/common/notifications.ts
@sandy081 IViewContainerDescriptor src/vs/workbench/common/views.ts
@sandy081 IExperimentAction src/vs/workbench/contrib/experiments/common/experimentService.ts
@sandy081 ConfigBasedExtensionRecommendation src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts
@sandy081 EXTENSION_LIST_ELEMENT_HEIGHT src/vs/workbench/contrib/extensions/browser/extensionsList.ts
@sandy081 ExtensionListRendererOptions src/vs/workbench/contrib/extensions/browser/extensionsList.ts
@sandy081 IExtensionTemplateData src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 IUnknownExtensionTemplateData src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 IExtensionData src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 AsyncDataSource src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 VirualDelegate src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 ExtensionRenderer src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 UnknownExtensionRenderer src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts
@sandy081 ExtensionsListViewOptions src/vs/workbench/contrib/extensions/browser/extensionsViews.ts
@sandy081 ExtensionHoverOptions src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts
@sandy081 extensionSponsorIconColor src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts
@sandy081 onExtensionChanged src/vs/workbench/contrib/extensions/common/extensionsUtils.ts
@sandy081 isKeymapExtension src/vs/workbench/contrib/extensions/common/extensionsUtils.ts
@sandy081 ResourceGlobMatcher src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts
@sandy081 MarkerViewModel src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts
@sandy081 IMarkersFiltersOptions src/vs/workbench/contrib/markers/browser/markersViewActions.ts
@sandy081 OUTPUT_MODE_ID src/vs/workbench/contrib/output/common/output.ts
@sandy081 LOG_MIME src/vs/workbench/contrib/output/common/output.ts
@sandy081 LOG_SCHEME src/vs/workbench/contrib/output/common/output.ts
@sandy081 LOG_MODE_ID src/vs/workbench/contrib/output/common/output.ts
@sandy081 OUTPUT_VIEW_ID src/vs/workbench/contrib/output/common/output.ts
@sandy081 CONTEXT_ACTIVE_LOG_OUTPUT src/vs/workbench/contrib/output/common/output.ts
@sandy081 CONTEXT_OUTPUT_SCROLL_LOCK src/vs/workbench/contrib/output/common/output.ts
@sandy081 OutputChannelUpdateMode src/vs/workbench/contrib/output/common/output.ts
@sandy081 IOutputChannel src/vs/workbench/contrib/output/common/output.ts
@sandy081 KeybindingsSearchOptions src/vs/workbench/contrib/preferences/browser/keybindingWidgets.ts
@sandy081 IEndpointDetails src/vs/workbench/contrib/preferences/common/preferences.ts
@sandy081 IOptions src/vs/workbench/contrib/search/browser/patternInputWidget.ts
@sandy081 PatternInputWidget src/vs/workbench/contrib/search/browser/patternInputWidget.ts
@sandy081 IConfigurationValue src/vs/workbench/services/configuration/common/configurationEditing.ts
@sandy081 IConfigurationEditingOptions src/vs/workbench/services/configuration/common/configurationEditing.ts
@sandy081 ConfigurationCache src/vs/workbench/services/configuration/test/browser/configuration.test.ts
@sandy081 ConfigurationCache src/vs/workbench/services/configuration/test/browser/configurationEditing.test.ts
@sandy081 ConfigurationCache src/vs/workbench/services/configuration/test/browser/configurationService.test.ts
@sandy081 DynamicRecommendation src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
@sandy081 ConfigRecommendation src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
@sandy081 ExecutableRecommendation src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
@sandy081 CachedRecommendation src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
@sandy081 ApplicationRecommendation src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
@sandy081 ExperimentalRecommendation src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts
@sandy081 OUTPUT_SERVICE_ID src/vs/workbench/services/output/common/output.ts
@sandy081 MAX_OUTPUT_LENGTH src/vs/workbench/services/output/common/output.ts
@sandy081 ISettingsSection src/vs/workbench/services/preferences/common/preferences.ts
@sandy081 IKeybindingsEditorSearchOptions src/vs/workbench/services/preferences/common/preferencesEditorInput.ts
@sandy081 isNullRange src/vs/workbench/services/preferences/common/preferencesModels.ts
@sandy081 AbstractSettingsModel src/vs/workbench/services/preferences/common/preferencesModels.ts
@sandy081 IProgressScope src/vs/workbench/services/progress/browser/progressIndicator.ts
@sandy081 IProfileStorageKey src/vs/workbench/services/userDataProfile/common/userDataProfileStorageRegistry.ts
@sbatten ActionTrigger src/vs/base/browser/ui/actionbar/actionbar.ts
@sbatten IActionOptions src/vs/base/browser/ui/actionbar/actionbar.ts
@sbatten IButtonWithDescription src/vs/base/browser/ui/button/button.ts
@sbatten LayoutAnchorMode src/vs/base/browser/ui/contextview/contextview.ts
@sbatten IDialogOptions src/vs/base/browser/ui/dialog/dialog.ts
@sbatten ISerializableView src/vs/base/browser/ui/grid/gridview.ts
@sbatten IViewDeserializer src/vs/base/browser/ui/grid/gridview.ts
@sbatten ISerializedLeafNode src/vs/base/browser/ui/grid/gridview.ts
@sbatten ISerializedBranchNode src/vs/base/browser/ui/grid/gridview.ts
@sbatten ISerializedNode src/vs/base/browser/ui/grid/gridview.ts
@sbatten ISerializedGridView src/vs/base/browser/ui/grid/gridview.ts
@sbatten INodeDescriptor src/vs/base/browser/ui/grid/gridview.ts
@sbatten MenuBarMenu src/vs/base/browser/ui/menu/menubar.ts
@sbatten IPaneDndController src/vs/base/browser/ui/splitview/paneview.ts
@sbatten DefaultPaneDndController src/vs/base/browser/ui/splitview/paneview.ts
@sbatten IConfirmDialogArgs src/vs/platform/dialogs/common/dialogs.ts
@sbatten IShowDialogArgs src/vs/platform/dialogs/common/dialogs.ts
@sbatten IInputDialogArgs src/vs/platform/dialogs/common/dialogs.ts
@sbatten ICustomDialogMarkdown src/vs/platform/dialogs/common/dialogs.ts
@sbatten IExtensionCapabilities src/vs/platform/extensions/common/extensions.ts
@sbatten LimitedWorkspaceSupportType src/vs/platform/extensions/common/extensions.ts
@sbatten ExtensionUntrustedWorkspaceSupport src/vs/platform/extensions/common/extensions.ts
@sbatten ExtensionVirtualWorkspaceSupport src/vs/platform/extensions/common/extensions.ts
@sbatten IMenubarMenuItemSeparator src/vs/platform/menubar/common/menubar.ts
@sbatten IMenuStyleOverrides src/vs/platform/theme/common/styler.ts
@sbatten defaultMenuStyles src/vs/platform/theme/common/styler.ts
@sbatten defaultDialogStyles src/vs/platform/theme/common/styler.ts
@sbatten WorkspaceTrustScope src/vs/platform/workspace/common/workspaceTrust.ts
@sbatten ICompositeDragAndDropObserverCallbacks src/vs/workbench/browser/dnd.ts
@sbatten DraggedCompositeIdentifier src/vs/workbench/browser/dnd.ts
@sbatten DraggedViewIdentifier src/vs/workbench/browser/dnd.ts
@sbatten ViewType src/vs/workbench/browser/dnd.ts
@sbatten MovePanelToSecondarySideBarAction src/vs/workbench/browser/parts/panel/panelActions.ts
@sbatten MoveSecondarySideBarToPanelAction src/vs/workbench/browser/parts/panel/panelActions.ts
@sbatten IPaneColors src/vs/workbench/browser/parts/views/viewPaneContainer.ts
@sbatten IViewPaneContainerOptions src/vs/workbench/browser/parts/views/viewPaneContainer.ts
@sbatten IDialogHandle src/vs/workbench/common/dialogs.ts
@sbatten FolderSettingsActionViewItem src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts
@sbatten createGroupIterator src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts
@sbatten NonCollapsibleObjectTreeModel src/vs/workbench/contrib/preferences/browser/settingsTree.ts
@sbatten ListSettingListModel src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts
@sbatten AbstractListSettingWidget src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts
@sbatten CanonicalWorkspace src/vs/workbench/services/workspaces/common/workspaceTrust.ts
@sbatten TestPaneCompositeService src/vs/workbench/test/browser/workbenchTestServices.ts
@sbatten TestSideBarPart src/vs/workbench/test/browser/workbenchTestServices.ts
@sbatten TestPanelPart src/vs/workbench/test/browser/workbenchTestServices.ts
@tylerleonhardt IDialogStyles src/vs/base/browser/ui/dialog/dialog.ts
@tylerleonhardt PreserveCaseToggle src/vs/base/browser/ui/findinput/replaceInput.ts
@tylerleonhardt IToggleOpts src/vs/base/browser/ui/toggle/toggle.ts
@tylerleonhardt IPossiblePowerShellExe src/vs/base/node/powershell.ts
@tylerleonhardt IEditorWorkerClient src/vs/editor/browser/services/editorWorkerService.ts
@tylerleonhardt IWordRange src/vs/editor/common/services/editorSimpleWorker.ts
@tylerleonhardt IAuthenticationContribution src/vs/platform/extensions/common/extensions.ts
@tylerleonhardt WindowStyles src/vs/platform/issue/common/issue.ts
@tylerleonhardt WindowData src/vs/platform/issue/common/issue.ts
@tylerleonhardt IToggleStyleOverrides src/vs/platform/theme/common/styler.ts
@tylerleonhardt Item src/vs/workbench/api/common/extHostQuickOpen.ts
@tylerleonhardt ExtHostQuickOpen src/vs/workbench/api/common/extHostQuickOpen.ts
@tylerleonhardt NetworkDebugAdapter src/vs/workbench/contrib/debug/node/debugAdapter.ts
@tylerleonhardt IFeedbackWidgetOptions src/vs/workbench/contrib/feedback/browser/feedback.ts
@tyriar getSystemShellSync src/vs/base/node/shell.ts
@tyriar matchesContiguousIconAware src/vs/base/parts/quickinput/browser/quickInputList.ts
@tyriar IMenuEntryActionViewItemOptions src/vs/platform/actions/browser/menuEntryActionViewItem.ts
@tyriar ILinuxEnv src/vs/platform/diagnostics/common/diagnostics.ts
@tyriar EnvironmentVariableMutatorType src/vs/platform/terminal/common/environmentVariable.ts
@tyriar IEnvironmentVariableMutator src/vs/platform/terminal/common/environmentVariable.ts
@tyriar IBaseUnresolvedTerminalProfile src/vs/platform/terminal/common/terminal.ts
@tyriar ITerminalFormatMessageOptions src/vs/platform/terminal/common/terminalStrings.ts
@tyriar getOutputMatchForCommand src/vs/platform/terminal/common/capabilities/commandDetectionCapability.ts
@tyriar deserializeMessage src/vs/platform/terminal/common/xterm/shellIntegrationAddon.ts
@tyriar PersistentTerminalProcess src/vs/platform/terminal/node/ptyService.ts
@tyriar ITerminalSerializer src/vs/platform/terminal/node/ptyService.ts
@tyriar ShellIntegrationExecutable src/vs/platform/terminal/node/terminalEnvironment.ts
@tyriar shellIntegrationArgs src/vs/platform/terminal/node/terminalEnvironment.ts
@tyriar IProfileVariableResolver src/vs/platform/terminal/node/terminalProfiles.ts
@tyriar ExtHostPseudoterminal src/vs/workbench/api/common/extHostTerminalService.ts
@tyriar EnvironmentVariableCollection src/vs/workbench/api/common/extHostTerminalService.ts
@tyriar ISearchOptions src/vs/workbench/contrib/terminal/browser/terminal.ts
@tyriar ITerminalBeforeHandleLinkEvent src/vs/workbench/contrib/terminal/browser/terminal.ts
@tyriar TerminalQuickFixCallback src/vs/workbench/contrib/terminal/browser/terminal.ts
@tyriar ITerminalQuickFixCommandAction src/vs/workbench/contrib/terminal/browser/terminal.ts
@tyriar IProfileContextProvider src/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.ts
@tyriar AnyCommandLineRegex src/vs/workbench/contrib/terminal/browser/terminalQuickFixBuiltinActions.ts
@tyriar IEventEmitter src/vs/workbench/contrib/terminal/browser/xterm-private.d.ts
@tyriar ITerminalExternalLinkType src/vs/workbench/contrib/terminal/browser/links/links.ts
@tyriar IResolvedValidLink src/vs/workbench/contrib/terminal/browser/links/links.ts
@tyriar OPEN_FILE_LABEL src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts
@tyriar FOLDER_IN_WORKSPACE_LABEL src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts
@tyriar FOLDER_NOT_IN_WORKSPACE_LABEL src/vs/workbench/contrib/terminal/browser/links/terminalLink.ts
@tyriar IActivateLinkEvent src/vs/workbench/contrib/terminal/browser/links/terminalLinkDetectorAdapter.ts
@tyriar IShowHoverEvent src/vs/workbench/contrib/terminal/browser/links/terminalLinkDetectorAdapter.ts
@tyriar positionIsInRange src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts
@tyriar XtermLinkMatcherValidationCallback src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts
@tyriar ConfirmOnExit src/vs/workbench/contrib/terminal/common/terminal.ts
@tyriar ITerminalLinkActivationResult src/vs/workbench/contrib/terminal/test/browser/links/terminalLinkOpeners.test.ts
@weinand INullableProcessEnvironment src/vs/platform/debug/common/extensionHostDebug.ts
@weinand IDebugAdapterExecutableOptions src/vs/workbench/contrib/debug/common/debug.ts
@weinand IDebugAdapterInlineImpl src/vs/workbench/contrib/debug/common/debug.ts
@weinand IDebugAdapterImpl src/vs/workbench/contrib/debug/common/debug.ts
@weinand IDebugAdapterTrackerFactory src/vs/workbench/contrib/debug/common/debug.ts
@weinand ITerminalLauncher src/vs/workbench/contrib/debug/common/debug.ts
@weinand PromptStringInputInfo src/vs/workbench/services/configurationResolver/common/configurationResolver.ts
@weinand PickStringInputInfo src/vs/workbench/services/configurationResolver/common/configurationResolver.ts
@weinand CommandInputInfo src/vs/workbench/services/configurationResolver/common/configurationResolver.ts
@weinand IVariableResolveContext src/vs/workbench/services/configurationResolver/common/variableResolver.ts
TylerLeonhardt commented 1 year ago

went through all of mine and cleaned up a couple... but some I left in because they could, in theory, be used in the future (i.e. an interface of a parameter that gets passed in)

Tyriar commented 1 year ago

FYI I see many of these are correctly exported interfaces, while they are not referenced directly outside, they are referenced in other symbols that are exported.

sandy081 commented 1 year ago

Checked and cleaned up those assigned to me