diff --git a/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/Rules/UseUriInsteadOfStringTest.cs b/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/Rules/UseUriInsteadOfStringTest.cs index 0f165b0fab1..ae3bee7dbac 100644 --- a/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/Rules/UseUriInsteadOfStringTest.cs +++ b/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/Rules/UseUriInsteadOfStringTest.cs @@ -23,6 +23,7 @@ using csharp::SonarAnalyzer.Rules.CSharp; using SonarAnalyzer.UnitTest.MetadataReferences; using SonarAnalyzer.UnitTest.TestFramework; +using Microsoft.CodeAnalysis; namespace SonarAnalyzer.UnitTest.Rules { @@ -36,6 +37,15 @@ public void UseUriInsteadOfString() => new UseUriInsteadOfString(), additionalReferences: MetadataReferenceFacade.GetSystemDrawing()); + [TestMethod] + [TestCategory("Rule")] + public void UseUriInsteadOfString_CSharp9() => + Verifier.VerifyAnalyzer(@"TestCases\UseUriInsteadOfString.CSharp9.cs", + new UseUriInsteadOfString(), + ParseOptionsHelper.FromCSharp9, + additionalReferences: MetadataReferenceFacade.GetSystemDrawing(), + outputKind: OutputKind.ConsoleApplication); + [TestMethod] [TestCategory("Rule")] public void UseUriInsteadOfString_InvalidCode() => diff --git a/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/TestCases/UseUriInsteadOfString.CSharp9.cs b/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/TestCases/UseUriInsteadOfString.CSharp9.cs new file mode 100644 index 00000000000..47d6b8c61fb --- /dev/null +++ b/sonaranalyzer-dotnet/tests/SonarAnalyzer.UnitTest/TestCases/UseUriInsteadOfString.CSharp9.cs @@ -0,0 +1,13 @@ +S3994 p = new("www.sonarsource.com"); // Compliant - FN + +string GetUrl(string url) => ""; // Compliant - FN + +public record S3994 +{ + public S3994(string uri) { } // Noncompliant {{Either change this parameter type to 'System.Uri' or provide an overload which takes a 'System.Uri' parameter.}} + + public S3994(string uri, bool blah) { } // Noncompliant {{Either change this parameter type to 'System.Uri' or provide an overload which takes a 'System.Uri' parameter.}} + + public virtual string Url { get; set; } // Noncompliant {{Change this property type to 'System.Uri'.}} +// ^^^^^^ +}