Skip to content

Code Quality: Member can be static #15001

New issue

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

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

Already on GitHub? # to your account

Closed
gumbarros opened this issue Mar 19, 2024 · 4 comments
Closed

Code Quality: Member can be static #15001

gumbarros opened this issue Mar 19, 2024 · 4 comments

Comments

@gumbarros
Copy link
Contributor

gumbarros commented Mar 19, 2024

Description

JetBrains Rider IDE suggests that methods with no instance usages and can be made static. But what’s the point? Well, as it turns out, static members yield a small performance benefit under particular circumstances.

Reference:
https://www.jetbrains.com/help/rider/MemberCanBeMadeStatic.Local.html

Concerned code


Found issues (98 issues)
	Found usages (98 issues)
		<tests> (5 issues)
			<tests>\<Files.InteractionTests> (5 issues)
				<tests>\<Files.InteractionTests>\Tests (5 issues)
					<tests>\<Files.InteractionTests>\Tests\FolderTests.cs (5 issues)
						Method 'NavigationTest' can be made static (0 issues)
						Method 'CreateFolderTest' can be made static (0 issues)
						Method 'RenameFolderTest' can be made static (0 issues)
						Method 'CopyPasteFolderTest' can be made static (0 issues)
						Method 'DeleteFolderTest' can be made static (0 issues)
		<src>\<core> (2 issues)
			<src>\<core>\<Files.Shared> (1 issue)
				<src>\<core>\<Files.Shared>\Helpers (1 issue)
					<src>\<core>\<Files.Shared>\Helpers\AsyncManualResetEvent.cs (1 issue)
						Method 'Delay' can be made static (0 issues)
			<src>\<core>\<Files.Core> (1 issue)
				<src>\<core>\<Files.Core>\Data\Items (1 issue)
					<src>\<core>\<Files.Core>\Data\Items\FileTagsDb.cs (1 issue)
						Method 'CheckDbVersion' can be made static (0 issues)
		<src>\<platforms> (91 issues)
			<src>\<platforms>\<Files.App> (89 issues)
				<src>\<platforms>\<Files.App>\MainWindow.xaml.cs (1 issue)
					Method 'OnNavigationFailed' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\App.xaml.cs (2 issues)
					Method 'Window_Activated' can be made static (0 issues)
					Method 'OnActivatedAsync' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Views (1 issue)
					<src>\<platforms>\<Files.App>\Views\SplashScreenPage.xaml.cs (1 issue)
						Property 'BranchLabel' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Views\Settings (2 issues)
					<src>\<platforms>\<Files.App>\Views\Settings\TagsPage.xaml.cs (2 issues)
						Method 'IsNameValid' can be made static (0 issues)
						Property 'AllowItemsDrag' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Views\Properties (1 issue)
					<src>\<platforms>\<Files.App>\Views\Properties\LibraryPage.xaml.cs (1 issue)
						Method 'InitializeWithWindow' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Views\Layouts (8 issues)
					<src>\<platforms>\<Files.App>\Views\Layouts\DetailsLayoutPage.xaml.cs (3 issues)
						Method 'FolderSettings_LayoutModeChangeRequested' can be made static (0 issues)
						Method 'IsCorrectColumn' can be made static (0 issues)
						Method 'SetToolTip' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Views\Layouts\ColumnsLayoutPage.xaml.cs (2 issues)
						Method 'RetrieveBladeColumnViewBase' can be made static (0 issues)
						Method 'GetLastCommonAndRelativeIndex' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Views\Layouts\BaseLayoutPage.cs (3 issues)
						Method 'AddCloseHandler' can be made static (0 issues)
						Method 'RemoveOverflow' can be made static (0 issues)
						Property 'AllowItemDrag' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\ViewModels (1 issue)
					<src>\<platforms>\<Files.App>\ViewModels\MainPageViewModel.cs (1 issue)
						Method 'ExecuteNavigateToNumberedTabKeyboardAcceleratorCommand' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\ViewModels\UserControls (9 issues)
					<src>\<platforms>\<Files.App>\ViewModels\UserControls\SidebarViewModel.cs (8 issues)
						Method 'IsLibraryOnSidebar' can be made static (0 issues)
						Method 'Section_PropertyChanged' can be made static (0 issues)
						Method 'BuildSection' can be made static (0 issues)
						Method 'ReorderItemsAsync' can be made static (0 issues)
						Method 'HandleDriveItemDragOverAsync' can be made static (0 issues)
						Method 'HandleTagItemDragOverAsync' can be made static (0 issues)
						Method 'HandleTagItemDroppedAsync' can be made static (0 issues)
						Property 'SidebarPinnedModel' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\ViewModels\UserControls\AddressToolbarViewModel.cs (1 issue)
						Property 'AddressToolbar' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\ViewModels\Settings (19 issues)
					<src>\<platforms>\<Files.App>\ViewModels\Settings\GeneralViewModel.cs (1 issue)
						Method 'InitializeWithWindow' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\ViewModels\Settings\AdvancedViewModel.cs (6 issues)
						Method 'OpenSettingsJsonAsync' can be made static (0 issues)
						Method 'DetectIsSetAsDefaultFileManager' can be made static (0 issues)
						Method 'DetectIsSetAsOpenFileDialog' can be made static (0 issues)
						Method 'InitializeWithWindow' can be made static (0 issues)
						Method 'InitializeWithWindow' can be made static (0 issues)
						Method 'ReadState' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\ViewModels\Settings\AboutViewModel.cs (10 issues)
						Method 'OpenLogLocation' can be made static (0 issues)
						Method 'DoOpenDocumentation' can be made static (0 issues)
						Method 'DoOpenDiscord' can be made static (0 issues)
						Method 'DoOpenGitHubRepo' can be made static (0 issues)
						Method 'DoOpenPrivacyPolicy' can be made static (0 issues)
						Method 'DoOpenCrowdin' can be made static (0 issues)
						Method 'SupportUs' can be made static (0 issues)
						Method 'GetWindowsVersion' can be made static (0 issues)
						Property 'AppName' can be made static (0 issues)
						Property 'AppVersion' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\ViewModels\Settings\LayoutViewModel.cs (1 issue)
						Method 'ResetLayoutPreferences' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\ViewModels\Settings\GitViewModel.cs (1 issue)
						Method 'DoConnectToGitHubAsync' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\ViewModels\Dialogs (1 issue)
					<src>\<platforms>\<Files.App>\ViewModels\Dialogs\DecompressArchiveDialogViewModel.cs (1 issue)
						Method 'InitializeWithWindow' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\Taskbar (2 issues)
					<src>\<platforms>\<Files.App>\Utils\Taskbar\SystemTrayIcon.cs (2 issues)
						Method 'OnDocumentationClicked' can be made static (0 issues)
						Method 'OnRestartClicked' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\Storage\StorageItems (1 issue)
					<src>\<platforms>\<Files.App>\Utils\Storage\StorageItems\VirtualStorageItem.cs (1 issue)
						Method 'StreamedFileWriterAsync' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\Storage\StorageBaseItems (1 issue)
					<src>\<platforms>\<Files.App>\Utils\Storage\StorageBaseItems\StorageCredential.cs (1 issue)
						Method 'MarshalToSecureString' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\Storage\Operations (4 issues)
					<src>\<platforms>\<Files.App>\Utils\Storage\Operations\ShellFilesystemOperations.cs (4 issues)
						Method 'CancelOperation' can be made static (0 issues)
						Method 'RequestAdminOperation' can be made static (0 issues)
						Method 'GetFileListDialog' can be made static (0 issues)
						Method 'WhoIsLocking' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\Storage\History (1 issue)
					<src>\<platforms>\<Files.App>\Utils\Storage\History\StorageHistoryOperations.cs (1 issue)
						Method 'IsHistoryNull' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\Shell (1 issue)
					<src>\<platforms>\<Files.App>\Utils\Shell\ShellFileOperations2.cs (1 issue)
						Method 'CallChkErr' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Utils\RecentItem (7 issues)
					<src>\<platforms>\<Files.App>\Utils\RecentItem\RecentItems.cs (7 issues)
						Method 'GetChangedActionEventArgs' can be made static (0 issues)
						Method 'ListRecentFilesAsync' can be made static (0 issues)
						Method 'ListRecentFoldersAsync' can be made static (0 issues)
						Method 'AddToRecentItems' can be made static (0 issues)
						Method 'ClearRecentItems' can be made static (0 issues)
						Method 'UnpinFromRecentFiles' can be made static (0 issues)
						Method 'CheckIsRecentFilesEnabled' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\UserControls\Widgets (2 issues)
					<src>\<platforms>\<Files.App>\UserControls\Widgets\DrivesWidget.xaml.cs (2 issues)
						Method 'EjectDeviceAsync' can be made static (0 issues)
						Method 'FormatDrive' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\UserControls\TabBar (2 issues)
					<src>\<platforms>\<Files.App>\UserControls\TabBar\BaseTabBar.cs (1 issue)
						Method 'TabView_CurrentInstanceChanged' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\UserControls\TabBar\TabBar.xaml.cs (1 issue)
						Property 'AllowTabsDrag' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\UserControls\Menus (2 issues)
					<src>\<platforms>\<Files.App>\UserControls\Menus\FileTagsContextMenu.cs (2 issues)
						Method 'RemoveFileTag' can be made static (0 issues)
						Method 'AddFileTag' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Services (3 issues)
					<src>\<platforms>\<Files.App>\Services\JumpListService.cs (1 issue)
						Method 'AddFolder' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Services\FileExplorerService.cs (2 issues)
						Method 'InitializeWithWindow' can be made static (0 issues)
						Method 'InitializeWithWindow' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Services\Settings (2 issues)
					<src>\<platforms>\<Files.App>\Services\Settings\UserSettingsService.cs (1 issue)
						Method 'GetSettingsService' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Services\Settings\FileTagsSettingsService.cs (1 issue)
						Method 'UntagAllFiles' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Services\PreviewPopupProviders (1 issue)
					<src>\<platforms>\<Files.App>\Services\PreviewPopupProviders\QuickLookProvider.cs (1 issue)
						Method 'DoPreviewAsync' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Helpers\UI (1 issue)
					<src>\<platforms>\<Files.App>\Helpers\UI\AppSystemBackdrop.cs (1 issue)
						Method 'SetAcrylicBackdropProperties' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Helpers\Layout (1 issue)
					<src>\<platforms>\<Files.App>\Helpers\Layout\LayoutPreferencesDatabaseManager.cs (1 issue)
						Method 'EnsureDatabaseVersion' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Dialogs (6 issues)
					<src>\<platforms>\<Files.App>\Dialogs\SettingsDialog.xaml.cs (1 issue)
						Property 'RootAppElement' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Dialogs\ReorderSidebarItemsDialog.xaml.cs (1 issue)
						Method 'DragOver_SetCaptions' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Dialogs\ReleaseNotesDialog.xaml.cs (1 issue)
						Method 'SetContentDialogRoot' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Dialogs\FileTooLargeDialog.xaml.cs (1 issue)
						Method 'SetContentDialogRoot' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Dialogs\FilesystemOperationDialog.xaml.cs (2 issues)
						Method 'SetContentDialogRoot' can be made static (0 issues)
						Method 'StartRename' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Data\Models (4 issues)
					<src>\<platforms>\<Files.App>\Data\Models\ItemViewModel.cs (3 issues)
						Method 'GetShieldIcon' can be made static (0 issues)
						Method 'CheckElevationRights' can be made static (0 issues)
						Method 'CheckCloudDriveSyncStatusAsync' can be made static (0 issues)
					<src>\<platforms>\<Files.App>\Data\Models\PinnedFoldersManager.cs (1 issue)
						Method 'CreateLocationItemFromPathAsync' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\Converters (1 issue)
					<src>\<platforms>\<Files.App>\Converters\GenericEnumConverter.cs (1 issue)
						Method 'ConvertInternal' can be made static (0 issues)
				<src>\<platforms>\<Files.App>\ViewModels\UserControls\Widgets (2 issues)
					<src>\<platforms>\<Files.App>\ViewModels\UserControls\Widgets\BaseWidgetViewModel.cs (2 issues)
						Method 'OpenInNewTabAsync' can be made static (0 issues)
						Method 'OpenInNewWindowAsync' can be made static (0 issues)
			<src>\<platforms>\<Files.App.BackgroundTasks> (2 issues)
				<src>\<platforms>\<Files.App.BackgroundTasks>\UpdateTask.cs (2 issues)
					Method 'DeleteLogFiles' can be made static (0 issues)
					Method 'RefreshJumpListAsync' can be made static (0 issues)
					

Gains

  • Small performance benefit under particular circumstances.

Requirements

  • Run R# analysis of the issue for the solution
  • Fix method by method

Comments

Another case of "peanut butter", a change that individually aren’t hugely meaningful but that over time add up to bigger impact.

@0x5bfa
Copy link
Member

0x5bfa commented Mar 19, 2024

I don't like marking event methods and properties as static.
@d2dyno1 what do you think?

@d2dyno1
Copy link
Member

d2dyno1 commented Mar 25, 2024

I agree. We shouldn't make things static where it is not needed (The performance gain is negligent anyway).

@gumbarros
Copy link
Contributor Author

I think there are more important code quality issues, like #15000 and we can ignore this as the performance gain is negligent.

@0x5bfa
Copy link
Member

0x5bfa commented Mar 26, 2024

I agree. In the meantime, closing. I would say we can add static accordingly when you work on another thing, not like this(not as the main purpose).

@gumbarros gumbarros closed this as not planned Won't fix, can't repro, duplicate, stale Apr 15, 2024
@github-project-automation github-project-automation bot moved this from 🆕 New to ✅ Done in Files task board Apr 15, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
Archived in project
Development

No branches or pull requests

3 participants