From 0371dfa0077c0f9d595f1fbdefcddd7dc1f5d6b1 Mon Sep 17 00:00:00 2001 From: Costin Zaharia <56015273+costin-zaharia-sonarsource@users.noreply.github.com> Date: Fri, 17 May 2024 17:15:37 +0200 Subject: [PATCH] Create reproducer for #9288 (#9297) --- .../Rules/Utilities/MetricsAnalyzerTest.cs | 22 +++++++++++++++++++ .../Utilities/MetricsAnalyzer/_Imports.razor | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 analyzers/tests/SonarAnalyzer.Test/TestCases/Utilities/MetricsAnalyzer/_Imports.razor diff --git a/analyzers/tests/SonarAnalyzer.Test/Rules/Utilities/MetricsAnalyzerTest.cs b/analyzers/tests/SonarAnalyzer.Test/Rules/Utilities/MetricsAnalyzerTest.cs index 54aa816f171..387580850f0 100644 --- a/analyzers/tests/SonarAnalyzer.Test/Rules/Utilities/MetricsAnalyzerTest.cs +++ b/analyzers/tests/SonarAnalyzer.Test/Rules/Utilities/MetricsAnalyzerTest.cs @@ -34,6 +34,7 @@ public class MetricsAnalyzerTest private const string RazorFileName = "Razor.razor"; private const string CsHtmlFileName = "Razor.cshtml"; private const string CSharp12FileName = "Metrics.CSharp12.cs"; + private const string ImportsRazorFileName = "_Imports.razor"; public TestContext TestContext { get; set; } @@ -79,6 +80,27 @@ public void VerifyMetrics_Razor() => metrics.StatementCount.Should().Be(6); }); + [TestMethod] + public void VerifyMetrics_Razor_Usings() => + CreateBuilder(false, ImportsRazorFileName) + .VerifyUtilityAnalyzer(messages => + { + var orderedMessages = messages.OrderBy(x => x.FilePath, StringComparer.InvariantCulture).ToArray(); + orderedMessages.Select(x => Path.GetFileName(x.FilePath)).Should().BeEquivalentTo(ImportsRazorFileName); + + var metrics = messages.Single(x => x.FilePath.EndsWith(ImportsRazorFileName)); + + metrics.ClassCount.Should().Be(0); + metrics.CodeLine.Should().BeEquivalentTo(new[] { 1, 2, 4 }); // FN: this file has only 3 lines. See: https://github.com/SonarSource/sonar-dotnet/issues/9288 + metrics.CognitiveComplexity.Should().Be(0); + metrics.Complexity.Should().Be(1); + metrics.ExecutableLines.Should().BeEquivalentTo(Array.Empty()); + metrics.FunctionCount.Should().Be(0); + metrics.NoSonarComment.Should().BeEmpty(); + metrics.NonBlankComment.Should().BeEquivalentTo(Array.Empty()); + metrics.StatementCount.Should().Be(0); + }); + [TestMethod] public void VerifyMetrics_CsHtml() => CreateBuilder(false, CsHtmlFileName) diff --git a/analyzers/tests/SonarAnalyzer.Test/TestCases/Utilities/MetricsAnalyzer/_Imports.razor b/analyzers/tests/SonarAnalyzer.Test/TestCases/Utilities/MetricsAnalyzer/_Imports.razor new file mode 100644 index 00000000000..9cebf452a43 --- /dev/null +++ b/analyzers/tests/SonarAnalyzer.Test/TestCases/Utilities/MetricsAnalyzer/_Imports.razor @@ -0,0 +1,2 @@ +@using System +@using System.Collections.Generic