Skip to main content
Source: AL0039UseStringComparisonExtensionsAnalyzer.cs

Description

String methods with StringComparison enum parameters are less readable. ANcpLua.Roslyn.Utilities provides named extension methods for clearer intent.

Bad Code

// Verbose StringComparison parameters
if (value.Equals("Warning", StringComparison.OrdinalIgnoreCase)) { }
if (path.StartsWith("/api/", StringComparison.Ordinal)) { }
if (text.Contains("error", StringComparison.OrdinalIgnoreCase)) { }

Good Code

using ANcpLua.Roslyn.Utilities;

// Clear intent with named extensions
if (value.EqualsIgnoreCase("Warning")) { }
if (path.StartsWithOrdinal("/api/")) { }
if (text.ContainsIgnoreCase("error")) { }

Properties

  • Category: Usage
  • Severity: Warning
  • Enabled by default: True
  • Code fix available: True

Configuration

dotnet_diagnostic.AL0039.severity = warning

Available Extensions

MethodOrdinalIgnoreCase
EqualsEqualsOrdinal()EqualsIgnoreCase()
StartsWithStartsWithOrdinal()StartsWithIgnoreCase()
EndsWithEndsWithOrdinal()EndsWithIgnoreCase()
ContainsContainsOrdinal()ContainsIgnoreCase()
IndexOfIndexOfOrdinal()IndexOfIgnoreCase()

Limitations

  • LastIndexOf is not flagged - no extension method exists
  • IndexOf with startIndex is not flagged - extensions only support simple (value, StringComparison) signatures