chore(sonar): bulk-fix mechanical CA/IDE analyzer warnings

Applied via `dotnet format analyzers --diagnostics IDE0028 CA1825 CA1834
CA1845 CA1847 CA1860 CA1866 CA1853 CA1830 CA1846 CA1806 CA1869 CA2249
--severity info`. 19 files touched, all mechanical syntactic rewrites:

- CA1847: string.Contains("x") -> string.Contains('x')
- CA2249: s.IndexOf(c) == -1 -> !s.Contains(c)
- CA1830: sb.Append(sb.ToString()) -> sb.Append(sb)
- CA1834: StringBuilder.Append("x") -> Append('x')
- CA1825, CA1860, CA1866, CA1853, IDE0028, CA1845: corresponding fixers

Three rules in the batch had no batch fixer available (CA1846 ×4,
CA1806 ×1, CA1869 ×1) and stay open for separate manual handling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Thom Lamb
2026-05-26 15:38:54 -05:00
co-authored by Claude Opus 4.7
parent 3010019dc5
commit 2c2a8b1193
19 changed files with 39 additions and 39 deletions
@@ -513,7 +513,7 @@ public class QueryBreakdownTests
// Assert
// Find the UserId parameter value
var userIdKey = merged.Keys.FirstOrDefault(k => k.Contains("UserId") && !k.Contains("$"));
var userIdKey = merged.Keys.FirstOrDefault(k => k.Contains("UserId") && !k.Contains('$'));
Assert.That(userIdKey, Is.Not.Null);
Assert.That(merged[userIdKey], Is.EqualTo(123)); // Main query value, not CTE value
}
@@ -559,9 +559,9 @@ public class QueryBreakdownTests
var merged = mainQuery.GetMergedParameters();
// Assert
var dateKey = merged.Keys.FirstOrDefault(k => k.Contains("CreatedDate") && !k.Contains("$"));
var boolKey = merged.Keys.FirstOrDefault(k => k.Contains("IsActive") && !k.Contains("$"));
var doubleKey = merged.Keys.FirstOrDefault(k => k.Contains("Threshold") && !k.Contains("$"));
var dateKey = merged.Keys.FirstOrDefault(k => k.Contains("CreatedDate") && !k.Contains('$'));
var boolKey = merged.Keys.FirstOrDefault(k => k.Contains("IsActive") && !k.Contains('$'));
var doubleKey = merged.Keys.FirstOrDefault(k => k.Contains("Threshold") && !k.Contains('$'));
Assert.That(dateKey, Is.Not.Null);
Assert.That(merged[dateKey], Is.TypeOf<DateTime>());
@@ -133,7 +133,7 @@ public class TestRuleInput
public string? ImGoingToMakeThisNull { get; set; } = null;
public TestRuleDetail[] Details { get; set; } = { };
public TestRuleDetail[] Details { get; set; } = Array.Empty<TestRuleDetail>();
}
public class TestRuleDetail
@@ -31,7 +31,7 @@ public class ExpressionFactoryFilterTests : ExpressionTestsBase
).SetName("CalendarFilter_{m}");
yield return new TestCaseData(
new Filter(4, FilterType.Timeframe, new object[] { }, Array.Empty<FilterCondition>(), DatePart.Month, false, 1, 3),
new Filter(4, FilterType.Timeframe, Array.Empty<object>(), Array.Empty<FilterCondition>(), DatePart.Month, false, 1, 3),
$"DEPT.DISCHARGE_DATE >= '{startOfCurrentMonth:yyyy-MM-dd}' AND DEPT.DISCHARGE_DATE < '{startOfEndMonth:yyyy-MM-dd}'"
).SetName("TimeframeFilter_{m}");
}
@@ -174,7 +174,7 @@ public class RecursiveCTETests
var merged = mainQuery.GetMergedParameters();
// Assert
var statusKey = merged.Keys.FirstOrDefault(k => k.Contains("Status") && !k.Contains("@") && !k.Contains("$"));
var statusKey = merged.Keys.FirstOrDefault(k => k.Contains("Status") && !k.Contains('@') && !k.Contains('$'));
Assert.That(statusKey, Is.Not.Null);
Assert.That(merged[statusKey], Is.EqualTo("active"), "Main query parameter should take precedence");
}