Files
pgsql-jellyfin/EDITORCONFIG_SETUP.md
T
wjones 8421e3ad5c Suppress non-critical warnings, refactor Emby.Naming
Expanded .editorconfig to silence non-critical IDE/StyleCop warnings and updated Emby.Naming.csproj to prevent warnings-as-errors in Debug. Refactored codebase for modern C# style, removed unused code and unnecessary usings, and fixed formatting and StringComparison issues. Added detailed documentation on code style and warning suppression. Project now builds cleanly with only critical issues surfaced.
2026-02-21 12:48:04 -05:00

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

  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 FileClose 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:

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

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

# 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