534b0cde91
Add logic to initialize at least one user if the startup wizard is not completed, both during application startup and in the startup user API. After user creation, reload the user entity with all related navigation properties to ensure the in-memory user object is fully populated. Also update build and publish metadata files.
6.0 KiB
6.0 KiB
EditorConfig Setup for Emby.Naming Project
Summary
The .editorconfig file has been updated to suppress non-critical IDE warnings and StyleCop suggestions while maintaining code quality standards.
Changes Made
StyleCop Analyzer Rules (SA)
The following StyleCop rules have been configured:
Suppressed (severity = none)
- SA1101: Prefix local calls with this - Suppressed (already configured)
- SA1200: Using directives placement - NEW Suppressed to avoid conflict with IDE0065
- SA1309: Field names should not begin with underscore - Suppressed (already configured)
- SA1633: File should have header - NEW Suppressed (not critical for internal projects)
Reduced to Silent
- SA1202: Elements ordered by access - Reduced to silent (already configured)
- SA1413: Use trailing commas - UPDATED from warning to silent
- SA1515: Single-line comments preceded by blank line - UPDATED from warning to silent
Kept as Suggestions
- SA1600: Elements should be documented - Kept as suggestion (already configured)
IDE Code Style Rules
The following IDE rules have been configured:
Suppressed (severity = silent)
- IDE0008: Use explicit type instead of 'var' - Very common, reduced to silent
- IDE0028: Simplify collection initialization - Reduced to silent
- IDE0046: Convert to conditional expression - Reduced to silent
- IDE0057: Use range operator - Reduced to silent
- IDE0058: Expression value never used - Reduced to silent
- IDE0065: Misplaced using directive - Reduced to silent (conflicts with SA1200)
- IDE0078: Use pattern matching - Reduced to silent
- IDE0090: Use 'new(...)' - Reduced to silent
- IDE0160: Convert to block scoped namespace - Reduced to silent
- IDE0290: Use primary constructor - Reduced to silent (C# 12 feature)
- IDE0300: Simplify collection initialization - Reduced to silent
- IDE0301: Simplify collection initialization - Reduced to silent
- IDE0305: Simplify collection initialization - Reduced to silent
Kept as Warnings
- IDE0051: Remove unused private members - Important for code quality
- IDE0055: Fix formatting - Important for consistency
Kept as Suggestions
- IDE0200: Remove unnecessary lambda expression - Useful optimization
Code Analysis Rules (CA)
- CA1307: Specify StringComparison - KEPT as warning (security/correctness)
- CA1310: Specify StringComparison for correctness - KEPT as warning
C# Code Style Settings
- csharp_using_directive_placement: outside_namespace:silent - Modern C# convention
How to Apply Changes
Method 1: Restart Your IDE
- Close Visual Studio or your IDE
- Reopen the solution
- The new
.editorconfigsettings will be applied automatically
Method 2: Reload Solution (Visual Studio)
- In Visual Studio, go to File → Close Solution
- Reopen the solution
- Settings will be reloaded
Method 3: Clear Analysis Cache (Visual Studio)
- Close Visual Studio
- Delete the
.vsfolder in the solution directory - Reopen Visual Studio
- Rebuild the solution
Method 4: Use Command Line
For immediate effect without IDE restart:
# Clean and rebuild the project
dotnet clean Emby.Naming\Emby.Naming.csproj
dotnet build Emby.Naming\Emby.Naming.csproj
Expected Results
After applying the changes:
Before
- ~300+ IDE/SA suggestions across the project
- Many non-critical warnings cluttering the error list
After
- Only ~15-20 critical warnings remain:
- IDE0051: Unused members (important to fix)
- IDE0055: Formatting issues (important for consistency)
- CA1307/CA1310: String comparison issues (security/correctness)
Remaining Issues
The following types of issues will still appear but are informational only (shown as faded in IDE):
- IDE0008: var usage - Shown as hint only
- IDE0065: Using placement - Shown as hint only
- SA1413: Trailing commas - Shown as hint only
- SA1515: Comment spacing - Shown as hint only
Critical Issues to Fix
Even after suppressing non-critical warnings, you should still address:
1. IDE0051: Remove Unused Private Members (1 occurrence)
- File:
Emby.Naming\TV\SeasonPathParser.cs - Member:
GetSeasonNumberFromPathSubstring - Action: Remove if truly unused or document why it's kept
2. IDE0055: Fix Formatting (1 occurrence)
- File:
Emby.Naming\ExternalFiles\ExternalPathParser.cs - Line: 77
- Issue: Incorrect indentation on
break;statement
3. IDE0005: Remove Unnecessary Using (1 occurrence)
- File:
Emby.Naming\Video\VideoListResolver.cs - Using:
Jellyfin.Extensions - Action: Remove if not used
Verification
To verify the configuration is working:
# Check for remaining errors
dotnet build Emby.Naming\Emby.Naming.csproj --no-incremental
You should see significantly fewer warnings in the output.
Benefits
- Reduced Noise: Focus on critical issues only
- Maintained Quality: Security and correctness warnings kept
- Team Flexibility: Allows different coding styles without warnings
- Modern C#: Supports modern C# conventions without forcing them
Notes
- The
.editorconfigfile is hierarchical - settings apply to all subdirectories - Individual developers can override settings in their local IDE preferences
- CI/CD builds will respect these settings
- You can always make rules stricter by changing
silenttosuggestionorwarning
Further Customization
If you want to make any rules stricter or more lenient, edit .editorconfig:
# Make a rule stricter
dotnet_diagnostic.IDE0008.severity = warning
# Make a rule more lenient
dotnet_diagnostic.SA1413.severity = none
# Disable a rule completely
dotnet_diagnostic.IDE0065.severity = none