From f82917391a994b209c12109724a4511d982fac98 Mon Sep 17 00:00:00 2001 From: Martin Strecker Date: Mon, 2 May 2022 10:20:17 +0200 Subject: [PATCH 1/4] Move to new test harness --- .../Rules/UnusedReturnValueTest.cs | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs b/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs index c28e7752247..4df0c680178 100644 --- a/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs +++ b/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs @@ -27,32 +27,31 @@ namespace SonarAnalyzer.UnitTest.Rules [TestClass] public class UnusedReturnValueTest { + private static readonly VerifierBuilder Builder = new VerifierBuilder(); + [TestMethod] public void UnusedReturnValue() => - OldVerifier.VerifyAnalyzer( - @"TestCases\UnusedReturnValue.cs", - new UnusedReturnValue(), - ParseOptionsHelper.FromCSharp8); + Builder.AddPaths("UnusedReturnValue.cs").WithOptions(ParseOptionsHelper.FromCSharp8).Verify(); [TestMethod] public void UnusedReturnValueWithPartialClasses() => - OldVerifier.VerifyAnalyzer( - new[] { @"TestCases\UnusedReturnValue.part1.cs", @"TestCases\UnusedReturnValue.part2.cs", @"TestCases\UnusedReturnValue.External.cs" }, - new UnusedReturnValue(), - ParseOptionsHelper.FromCSharp8); + Builder.AddPaths("UnusedReturnValue.part1.cs", "UnusedReturnValue.part2.cs", "UnusedReturnValue.External.cs").WithOptions(ParseOptionsHelper.FromCSharp8).Verify(); #if NET + [TestMethod] public void UnusedReturnValue_CSharp9() => - OldVerifier.VerifyAnalyzerFromCSharp9Console(@"TestCases\UnusedReturnValue.CSharp9.cs", new UnusedReturnValue()); + Builder.AddPaths("UnusedReturnValue.CSharp9.cs").WithTopLevelStatements().Verify(); [TestMethod] public void UnusedReturnValue_CSharp10() => - OldVerifier.VerifyAnalyzerFromCSharp10Console(@"TestCases\UnusedReturnValue.CSharp10.cs", new UnusedReturnValue()); + Builder.AddPaths("UnusedReturnValue.CSharp10.cs").WithTopLevelStatements().WithOptions(ParseOptionsHelper.FromCSharp10).Verify(); [TestMethod] public void UnusedReturnValue_CSharpPreview() => - OldVerifier.VerifyAnalyzerCSharpPreviewLibrary(@"TestCases\UnusedReturnValue.CSharpPreview.cs", new UnusedReturnValue()); + Builder.AddPaths("UnusedReturnValue.CSharpPreview.cs").WithOptions(ParseOptionsHelper.CSharpPreview).Verify(); + #endif + } } From 3b548bbba6a97531863ca1645c5037d2b2c39658 Mon Sep 17 00:00:00 2001 From: Martin Strecker Date: Mon, 2 May 2022 10:22:18 +0200 Subject: [PATCH 2/4] Adopt c#10 test --- .../TestCases/UnusedReturnValue.CSharp10.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/UnusedReturnValue.CSharp10.cs b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/UnusedReturnValue.CSharp10.cs index 41feb06713b..d80f7513394 100644 --- a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/UnusedReturnValue.CSharp10.cs +++ b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/UnusedReturnValue.CSharp10.cs @@ -40,7 +40,7 @@ public void Test() var o = SomeGenericMethod2(); } - private T SomeGenericMethod() where T : class { return null; } // FN + private T SomeGenericMethod() where T : class { return null; } // Noncompliant {{Change return type to 'void'; not a single caller uses the returned value.}} private T SomeGenericMethod2() where T : class { return null; } } @@ -57,6 +57,6 @@ public void Test() var o = SomeGenericMethod2(); } - private T SomeGenericMethod() where T : class { return null; } // FN + private T SomeGenericMethod() where T : class { return null; } // Noncompliant {{Change return type to 'void'; not a single caller uses the returned value.}} private T SomeGenericMethod2() where T : class { return null; } } From 823e08eaae1d6129599cf3c2d03c0f8eb0636fee Mon Sep 17 00:00:00 2001 From: Martin Strecker Date: Mon, 2 May 2022 11:06:33 +0200 Subject: [PATCH 3/4] Fix failing tests. --- .../Helpers/CSharpRemovableDeclarationCollector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analyzers/src/SonarAnalyzer.CSharp/Helpers/CSharpRemovableDeclarationCollector.cs b/analyzers/src/SonarAnalyzer.CSharp/Helpers/CSharpRemovableDeclarationCollector.cs index c303234ec83..b5ec423c578 100644 --- a/analyzers/src/SonarAnalyzer.CSharp/Helpers/CSharpRemovableDeclarationCollector.cs +++ b/analyzers/src/SonarAnalyzer.CSharp/Helpers/CSharpRemovableDeclarationCollector.cs @@ -54,6 +54,6 @@ public static bool IsNodeContainerTypeDeclaration(SyntaxNode node) => IsNodeStructOrClassOrRecordDeclaration(node) || node.IsKind(SyntaxKind.InterfaceDeclaration); private static bool IsNodeStructOrClassOrRecordDeclaration(SyntaxNode node) => - node.IsAnyKind(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration, SyntaxKindEx.RecordClassDeclaration); + node.IsAnyKind(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration, SyntaxKindEx.RecordClassDeclaration, SyntaxKindEx.RecordStructDeclaration); } } From ef3f30f4dd15679b2d7a8bd85105d6f4f34928f9 Mon Sep 17 00:00:00 2001 From: Martin Strecker Date: Wed, 4 May 2022 10:26:51 +0200 Subject: [PATCH 4/4] VerifyerBuilder should not be static --- .../Rules/UnusedReturnValueTest.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs b/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs index 4df0c680178..94212093250 100644 --- a/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs +++ b/analyzers/tests/SonarAnalyzer.UnitTest/Rules/UnusedReturnValueTest.cs @@ -27,29 +27,29 @@ namespace SonarAnalyzer.UnitTest.Rules [TestClass] public class UnusedReturnValueTest { - private static readonly VerifierBuilder Builder = new VerifierBuilder(); + private readonly VerifierBuilder builder = new VerifierBuilder(); [TestMethod] public void UnusedReturnValue() => - Builder.AddPaths("UnusedReturnValue.cs").WithOptions(ParseOptionsHelper.FromCSharp8).Verify(); + builder.AddPaths("UnusedReturnValue.cs").WithOptions(ParseOptionsHelper.FromCSharp8).Verify(); [TestMethod] public void UnusedReturnValueWithPartialClasses() => - Builder.AddPaths("UnusedReturnValue.part1.cs", "UnusedReturnValue.part2.cs", "UnusedReturnValue.External.cs").WithOptions(ParseOptionsHelper.FromCSharp8).Verify(); + builder.AddPaths("UnusedReturnValue.part1.cs", "UnusedReturnValue.part2.cs", "UnusedReturnValue.External.cs").WithOptions(ParseOptionsHelper.FromCSharp8).Verify(); #if NET [TestMethod] public void UnusedReturnValue_CSharp9() => - Builder.AddPaths("UnusedReturnValue.CSharp9.cs").WithTopLevelStatements().Verify(); + builder.AddPaths("UnusedReturnValue.CSharp9.cs").WithTopLevelStatements().Verify(); [TestMethod] public void UnusedReturnValue_CSharp10() => - Builder.AddPaths("UnusedReturnValue.CSharp10.cs").WithTopLevelStatements().WithOptions(ParseOptionsHelper.FromCSharp10).Verify(); + builder.AddPaths("UnusedReturnValue.CSharp10.cs").WithTopLevelStatements().WithOptions(ParseOptionsHelper.FromCSharp10).Verify(); [TestMethod] public void UnusedReturnValue_CSharpPreview() => - Builder.AddPaths("UnusedReturnValue.CSharpPreview.cs").WithOptions(ParseOptionsHelper.CSharpPreview).Verify(); + builder.AddPaths("UnusedReturnValue.CSharpPreview.cs").WithOptions(ParseOptionsHelper.CSharpPreview).Verify(); #endif