diff --git a/analyzers/src/SonarAnalyzer.Common/Rules/SpecifyTimeoutOnRegexBase.cs b/analyzers/src/SonarAnalyzer.Common/Rules/SpecifyTimeoutOnRegexBase.cs index d605d59e417..91a606e3d53 100644 --- a/analyzers/src/SonarAnalyzer.Common/Rules/SpecifyTimeoutOnRegexBase.cs +++ b/analyzers/src/SonarAnalyzer.Common/Rules/SpecifyTimeoutOnRegexBase.cs @@ -65,7 +65,7 @@ protected override void Initialize(SonarAnalysisContext context) Language.GeneratedCodeRecognizer, c => { - if (IsRegexMatchMethod(Language.Syntax.NodeIdentifier(c.Node).Value.Text) + if (IsRegexMatchMethod(Language.Syntax.NodeIdentifier(c.Node).GetValueOrDefault().Text) && RegexMethodLacksTimeout(c.Node, c.SemanticModel)) { c.ReportIssue(Diagnostic.Create(Rule, c.Node.GetLocation())); diff --git a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/RuleFailure/SpecialCases.vb b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/RuleFailure/SpecialCases.vb index c93483a6751..0725daac5ad 100644 --- a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/RuleFailure/SpecialCases.vb +++ b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/RuleFailure/SpecialCases.vb @@ -13,6 +13,10 @@ Namespace TestCasesForRuleFailure Public Sub ParamsMethod(i As Integer, ParamArray j() As Integer) End Sub + Public Sub ArgListMethod(__arglist) + ArgListMethod("__arglist"("")) + End Sub + Public Shared Widening Operator CType(c As SpecialCases) As String Return "" End Operator diff --git a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.cs b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.cs index f8bfe4e050c..d5f6e0e9414 100644 --- a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.cs +++ b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.cs @@ -66,6 +66,14 @@ void Static(RegexOptions options) } } +class DoesNotCrash +{ + void MethodWitoutIdentifier(__arglist) + { + MethodWitoutIdentifier(__arglist("")); + } +} + namespace NoSystem { public class Regex diff --git a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.vb b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.vb index 421349f930a..6275c3d224e 100644 --- a/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.vb +++ b/analyzers/tests/SonarAnalyzer.UnitTest/TestCases/SpecifyTimeoutOnRegex.vb @@ -47,3 +47,9 @@ Class Noncompliant Dim split = Regex.Split("some input", "some pattern", options) ' Noncompliant End Sub End Class + +Class DoesNotCrash + Private Sub MethodWitoutIdentifier(__arglist) + MethodWitoutIdentifier("__arglist"("")) + End Sub +End Class