Ensure initial user exists before startup wizard completes
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.
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
# 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
|
||||
|
||||
1. Close Visual Studio or your IDE
|
||||
2. Reopen the solution
|
||||
3. The new `.editorconfig` settings will be applied automatically
|
||||
|
||||
### Method 2: Reload Solution (Visual Studio)
|
||||
|
||||
1. In Visual Studio, go to **File** → **Close Solution**
|
||||
2. Reopen the solution
|
||||
3. Settings will be reloaded
|
||||
|
||||
### Method 3: Clear Analysis Cache (Visual Studio)
|
||||
|
||||
1. Close Visual Studio
|
||||
2. Delete the `.vs` folder in the solution directory
|
||||
3. Reopen Visual Studio
|
||||
4. Rebuild the solution
|
||||
|
||||
### Method 4: Use Command Line
|
||||
|
||||
For immediate effect without IDE restart:
|
||||
|
||||
```powershell
|
||||
# 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):
|
||||
|
||||
1. **IDE0008**: var usage - Shown as hint only
|
||||
2. **IDE0065**: Using placement - Shown as hint only
|
||||
3. **SA1413**: Trailing commas - Shown as hint only
|
||||
4. **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:
|
||||
|
||||
```powershell
|
||||
# Check for remaining errors
|
||||
dotnet build Emby.Naming\Emby.Naming.csproj --no-incremental
|
||||
```
|
||||
|
||||
You should see significantly fewer warnings in the output.
|
||||
|
||||
## Benefits
|
||||
|
||||
1. **Reduced Noise**: Focus on critical issues only
|
||||
2. **Maintained Quality**: Security and correctness warnings kept
|
||||
3. **Team Flexibility**: Allows different coding styles without warnings
|
||||
4. **Modern C#**: Supports modern C# conventions without forcing them
|
||||
|
||||
## Notes
|
||||
|
||||
- The `.editorconfig` file 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 `silent` to `suggestion` or `warning`
|
||||
|
||||
## Further Customization
|
||||
|
||||
If you want to make any rules stricter or more lenient, edit `.editorconfig`:
|
||||
|
||||
```ini
|
||||
# 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
|
||||
```
|
||||
|
||||
## Reference
|
||||
|
||||
- [EditorConfig Documentation](https://editorconfig.org/)
|
||||
- [.NET Code Style Rules](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/)
|
||||
- [StyleCop Analyzers Documentation](https://github.com/DotNetAnalyzers/StyleCopAnalyzers)
|
||||
Reference in New Issue
Block a user