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 #164937

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

Reduce unused exports #164937

joyceerhl opened this issue Oct 28, 2022 · 5 comments
Labels
debt Code quality issues

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
@daviddossett editorMarkerNavigationWarningHeader src/vs/editor/contrib/gotoError/browser/gotoErrorWidget.ts
@daviddossett extensionRatingIconColor src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts
@daviddossett extensionPreReleaseIconColor src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts
@deepak1556 InputEvent src/vs/base/parts/sandbox/common/electronTypes.ts
@hediet IObservableLogger src/vs/base/common/observableImpl/logging.ts
@hediet LoggingObserver src/vs/base/test/common/observable.test.ts
@hediet LoggingObservableValue src/vs/base/test/common/observable.test.ts
@hediet TimeOffset src/vs/base/test/common/timeTravelScheduler.ts
@hediet Scheduler src/vs/base/test/common/timeTravelScheduler.ts
@hediet ScheduledTask src/vs/base/test/common/timeTravelScheduler.ts
@hediet ScheduledTaskSource src/vs/base/test/common/timeTravelScheduler.ts
@hediet TimeTravelScheduler src/vs/base/test/common/timeTravelScheduler.ts
@hediet AsyncSchedulerProcessor src/vs/base/test/common/timeTravelScheduler.ts
@hediet originalGlobalValues src/vs/base/test/common/timeTravelScheduler.ts
@hediet throwIfDisposablesAreLeakedAsync src/vs/base/test/common/utils.ts
@hediet PartialModelCursorState src/vs/editor/common/cursorCommon.ts
@hediet PartialViewCursorState src/vs/editor/common/cursorCommon.ts
@hediet OutputPosition src/vs/editor/common/modelLineProjectionData.ts
@hediet joinSequenceDiffs src/vs/editor/common/diff/algorithms/joinSequenceDiffs.ts
@hediet shiftSequenceDiffs src/vs/editor/common/diff/algorithms/joinSequenceDiffs.ts
@hediet Extensions src/vs/editor/common/languages/modesRegistry.ts
@hediet BracketKindBase src/vs/editor/common/languages/supports/languageBracketsConfiguration.ts
@hediet lengthCompare src/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.ts
@hediet lengthOfStringObj src/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.ts
@hediet lengthHash src/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.ts
@hediet IDenseKeyProvider src/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.ts
@hediet ILineChange src/vs/editor/common/services/editorWorker.ts
@hediet ICharChange src/vs/editor/common/services/editorWorker.ts
@hediet IUnicodeCharacterSearcherTarget src/vs/editor/common/services/unicodeTextModelHighlighter.ts
@hediet ActiveGhostTextController src/vs/editor/contrib/inlineCompletions/browser/ghostTextController.ts
@hediet DelegatingModel src/vs/editor/contrib/inlineCompletions/browser/ghostTextModel.ts
@hediet InlineCompletionsSession src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts
@hediet TrackedInlineCompletion src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts
@hediet SuggestWidgetState src/vs/editor/contrib/inlineCompletions/browser/suggestWidgetInlineCompletionProvider.ts
@hediet SuggestItemInfo src/vs/editor/contrib/inlineCompletions/browser/suggestWidgetInlineCompletionProvider.ts
@hediet IBannerItem src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts
@hediet TextEdit src/vs/editor/test/common/model/bracketPairColorizer/beforeEditPositionMapper.test.ts
@hediet Sound src/vs/workbench/contrib/audioCues/browser/audioCueService.ts
@hediet MergeEditorArgs src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.ts
@hediet IMergeEditorInputModelFactory src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.ts
@hediet elementAtOrUndefined src/vs/workbench/contrib/mergeEditor/browser/utils.ts
@hediet MergeMarkersController src/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.ts
@hediet IMergeDiffComputerResult src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.ts
@hediet LineEdits src/vs/workbench/contrib/mergeEditor/browser/model/editing.ts
@hediet MergeEditorModelState src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.ts
@hediet getOtherInputNumber src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet AbstractModifiedBaseRangeState src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet ModifiedBaseRangeStateBase src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet ModifiedBaseRangeStateInput1 src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet ModifiedBaseRangeStateInput2 src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet ModifiedBaseRangeStateBoth src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet ModifiedBaseRangeStateUnrecognized src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.ts
@hediet ProjectedDiffComputer src/vs/workbench/contrib/mergeEditor/browser/model/projectedDocumentDiffProvider.ts
@hediet ITextModelDiffsState src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.ts
@hediet IGutterItemProvider src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.ts
@hediet LineAlignment src/vs/workbench/contrib/mergeEditor/browser/view/lineAlignment.ts
@hediet MergeEditorViewZones src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.ts
@hediet MergeEditorViewZone src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.ts
@hediet ModifiedBaseRangeGutterItemModel src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts
@hediet MergeConflictGutterItemView src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts
@isidorn CenteredViewState src/vs/base/browser/ui/centered/centeredViewLayout.ts
@isidorn ICenteredViewStyles src/vs/base/browser/ui/centered/centeredViewLayout.ts
@isidorn WorkbenchListMultiSelection src/vs/platform/list/browser/listService.ts
@isidorn SIGN_SERVICE_ID src/vs/platform/sign/common/sign.ts
@isidorn ICompositeBarOptions src/vs/workbench/browser/parts/compositeBar.ts
@roblourens MAX_VALUE_RENDER_LENGTH_IN_VIEWLET src/vs/workbench/contrib/debug/browser/baseDebugView.ts
@roblourens twistiePixels src/vs/workbench/contrib/debug/browser/baseDebugView.ts
@roblourens IRenderValueOptions src/vs/workbench/contrib/debug/browser/baseDebugView.ts
@roblourens IVariableTemplateData src/vs/workbench/contrib/debug/browser/baseDebugView.ts
@roblourens IPrivateBreakpointWidgetService src/vs/workbench/contrib/debug/browser/breakpointWidget.ts
@roblourens VariablesDataSource src/vs/workbench/contrib/debug/browser/variablesView.ts
@roblourens WatchExpressionsRenderer src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts
@roblourens DEBUG_SERVICE_ID src/vs/workbench/contrib/debug/common/debug.ts
@roblourens IEnvConfig src/vs/workbench/contrib/debug/common/debug.ts
@lramos15 BaseSaveAllAction src/vs/workbench/contrib/files/browser/fileActions.ts
@lramos15 IFileTemplateData src/vs/workbench/contrib/files/browser/views/explorerViewer.ts
@sandy081 MAX_OUTPUT_LENGTH src/vs/workbench/contrib/output/common/output.ts
@sandy081 CONTEXT_IN_OUTPUT src/vs/workbench/contrib/output/common/output.ts
@sandy081 create src/vs/workbench/contrib/output/common/outputLinkComputer.ts
@isidorn
Copy link
Contributor

isidorn commented Oct 31, 2022

I have added owners of code areas I used to own and I updated the table.

@hediet
Copy link
Member

hediet commented Oct 31, 2022

I often use export to indicate that a class is not an internal utility or implementation detail, but part of the API and safe to be used by others...

@joyceerhl
Copy link
Contributor Author

@hediet yeah please feel free to keep those exported 🙂

@roblourens
Copy link
Member

Also types that are used implicitly (like by passing an options object literal to another method) but are not actually currently referenced by name. I have a couple of those. But this was some good cleanup, thanks for the prompt!

roblourens added a commit that referenced this issue Nov 1, 2022
@lramos15 lramos15 removed their assignment Nov 4, 2022
@daviddossett daviddossett added the debt Code quality issues label Dec 6, 2022
@hediet hediet added editor-core Editor basic functionality and removed editor-core Editor basic functionality labels Dec 6, 2022
@hediet hediet removed their assignment Dec 6, 2022
@daviddossett daviddossett removed their assignment Dec 8, 2022
@roblourens roblourens removed their assignment Dec 29, 2022
@sandy081 sandy081 removed their assignment Jan 31, 2023
@sandy081
Copy link
Member

Checked and updated those assigned to me.

@deepak1556 deepak1556 removed their assignment Jan 31, 2023
@github-actions github-actions bot locked and limited conversation to collaborators Mar 17, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
debt Code quality issues
Projects
None yet
Development

No branches or pull requests

8 participants