Files
pgsql-jellyfin/docs/EDITORCONFIG_SETUP.md
wjones 534b0cde91 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.
2026-02-23 15:42:19 -05:00

180 lines
6.0 KiB
Markdown

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