Skip to content

Commit ee1cf23

Browse files
Modernize analyzers and assertions with C# 12 features
Refactored assertion helper structs to use primary constructors, removing redundant fields and constructors. Updated analyzer and code fix provider classes to use collection expressions for ImmutableArray properties. Suppressed RS1038 warning in the project file. These changes improve code clarity and leverage modern C# syntax.
1 parent 23aacbe commit ee1cf23

5 files changed

Lines changed: 24 additions & 33 deletions

File tree

Analyzers/Open.Text.Analyzers.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<Nullable>enable</Nullable>
77
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
88
<IsRoslynComponent>true</IsRoslynComponent>
9+
<NoWarn>RS1038</NoWarn>
910

1011
<!-- NuGet Package settings -->
1112
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Analyzers/SplitAnalyzer.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
using System.Collections.Immutable;
2-
using System.Linq;
31
using Microsoft.CodeAnalysis;
42
using Microsoft.CodeAnalysis.CSharp;
53
using Microsoft.CodeAnalysis.CSharp.Syntax;
64
using Microsoft.CodeAnalysis.Diagnostics;
5+
using System.Collections.Immutable;
6+
using System.Linq;
77

88
namespace Open.Text.Analyzers;
99

@@ -13,10 +13,11 @@ namespace Open.Text.Analyzers;
1313
[DiagnosticAnalyzer(LanguageNames.CSharp)]
1414
public class SplitAnalyzer : DiagnosticAnalyzer
1515
{
16-
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(
17-
DiagnosticDescriptors.UseSplitAsSegments,
18-
DiagnosticDescriptors.UseFirstSplitInsteadOfSplitFirst,
19-
DiagnosticDescriptors.UseSplitToEnumerable);
16+
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [
17+
DiagnosticDescriptors.UseSplitAsSegments,
18+
DiagnosticDescriptors.UseFirstSplitInsteadOfSplitFirst,
19+
DiagnosticDescriptors.UseSplitToEnumerable,
20+
];
2021

2122
public override void Initialize(AnalysisContext context)
2223
{

Analyzers/SplitCodeFixProvider.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ namespace Open.Text.Analyzers;
1717
[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(SplitCodeFixProvider)), Shared]
1818
public class SplitCodeFixProvider : CodeFixProvider
1919
{
20-
public override ImmutableArray<string> FixableDiagnosticIds => ImmutableArray.Create(
21-
DiagnosticDescriptors.UseSplitAsSegments.Id,
22-
DiagnosticDescriptors.UseFirstSplitInsteadOfSplitFirst.Id,
23-
DiagnosticDescriptors.UseSplitToEnumerable.Id);
20+
public override ImmutableArray<string> FixableDiagnosticIds => [
21+
DiagnosticDescriptors.UseSplitAsSegments.Id,
22+
DiagnosticDescriptors.UseFirstSplitInsteadOfSplitFirst.Id,
23+
DiagnosticDescriptors.UseSplitToEnumerable.Id,
24+
];
2425

2526
public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer;
2627

Analyzers/StringConcatenationAnalyzer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Open.Text.Analyzers;
1212
[DiagnosticAnalyzer(LanguageNames.CSharp)]
1313
public class StringConcatenationAnalyzer : DiagnosticAnalyzer
1414
{
15-
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(DiagnosticDescriptors.UseStringBuilderInLoop);
15+
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [DiagnosticDescriptors.UseStringBuilderInLoop];
1616

1717
public override void Initialize(AnalysisContext context)
1818
{

Tests/AssertionExtensions.cs

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,30 @@ public static class AssertionExtensions
77
{
88
public static AssertionResult<T> Should<T>(this T actual) => new(actual);
99

10-
public readonly struct AssertionResult<T>
10+
public readonly struct AssertionResult<T>(T actual)
1111
{
12-
private readonly T _actual;
12+
public void Be(T expected) => Assert.Equal(expected, actual);
1313

14-
public AssertionResult(T actual) => _actual = actual;
15-
16-
public void Be(T expected) => Assert.Equal(expected, _actual);
17-
18-
public void BeEquivalentTo(T expected) => Assert.Equal(expected, _actual);
14+
public void BeEquivalentTo(T expected) => Assert.Equal(expected, actual);
1915
}
2016

2117
public static BoolAssertionResult Should(this bool actual) => new(actual);
2218

23-
public readonly struct BoolAssertionResult
19+
public readonly struct BoolAssertionResult(bool actual)
2420
{
25-
private readonly bool _actual;
21+
public void Be(bool expected) => Assert.Equal(expected, actual);
2622

27-
public BoolAssertionResult(bool actual) => _actual = actual;
23+
public void BeTrue() => Assert.True(actual);
2824

29-
public void Be(bool expected) => Assert.Equal(expected, _actual);
30-
31-
public void BeTrue() => Assert.True(_actual);
32-
33-
public void BeFalse() => Assert.False(_actual);
25+
public void BeFalse() => Assert.False(actual);
3426
}
3527

3628
public static StringAssertionResult Should(this string? actual) => new(actual);
3729

38-
public readonly struct StringAssertionResult
30+
public readonly struct StringAssertionResult(string? actual)
3931
{
40-
private readonly string? _actual;
41-
42-
public StringAssertionResult(string? actual) => _actual = actual;
32+
public void Be(string? expected) => Assert.Equal(expected, actual);
4333

44-
public void Be(string? expected) => Assert.Equal(expected, _actual);
45-
46-
public void BeEquivalentTo(string? expected) => Assert.Equal(expected, _actual);
34+
public void BeEquivalentTo(string? expected) => Assert.Equal(expected, actual);
4735
}
4836
}

0 commit comments

Comments
 (0)