- SonarQube 9.5
- SonarLint 6.6.0
- Visual Studio 17.2.2
The Errors and Warnings window for my AspNetCore 3.1 app is showing the analyzer crashed:
Severity Code Description Project Path File Line Suppression State
Error AD0001 Analyzer 'SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner' threw an exception of type 'SonarAnalyzer.SymbolicExecution.SymbolicExecutionException' with message 'Error processing method: MyMethod1 ## Method file: C:\PATHTOMYMETHODFILE.cs ## Method line: 136,8 ## Inner exception: System.ArgumentNullException: Value cannot be null. ## Parameter name: key ## at System.Collections.Immutable.Requires.FailArgumentNullException(String parameterName) ## at System.Collections.Immutable.ImmutableDictionary`2.SetItem(TKey key, TValue value) ## at SonarAnalyzer.SymbolicExecution.Sonar.ProgramState.StoreSymbolicValue(ISymbol symbol, SymbolicValue newSymbolicValue) ## at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitParenthesizedVariableDesignationSyntax(ParenthesizedVariableDesignationSyntaxWrapper designation, ProgramState programState) ## at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitDeclarationExpression(DeclarationExpressionSyntaxWrapper wrapper, ProgramState programState) ## at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitInstruction(ExplodedGraphNode node) ## at SonarAnalyzer.SymbolicExecution.Sonar.AbstractExplodedGraph.Walk() ## at SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner.AnalyzeSonar(SyntaxNodeAnalysisContext context, Boolean isTestProject, Boolean isScannerRun, SyntaxNode body, ISymbol symbol)'.
Exception occurred with following context:
Compilation: MyCompany.MyService.API
SyntaxTree: C:\dev\MYSolution\MyService\MyService.API\Controllers\MyController.cs
SyntaxNode: private async Task<PortfolioPositionsPatchResult ... [MethodDeclarationSyntax]@[7228..10644) (135,8)-(196,9)
SonarAnalyzer.SymbolicExecution.SymbolicExecutionException: Error processing method: MyMethod1 ## Method file: C:\PATHTOMYMETHODFILE.cs ## Method line: 136,8 ## Inner exception: System.ArgumentNullException: Value cannot be null. ## Parameter name: key ## at System.Collections.Immutable.Requires.FailArgumentNullException(String parameterName) ## at System.Collections.Immutable.ImmutableDictionary`2.SetItem(TKey key, TValue value) ## at SonarAnalyzer.SymbolicExecution.Sonar.ProgramState.StoreSymbolicValue(ISymbol symbol, SymbolicValue newSymbolicValue) ## at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitParenthesizedVariableDesignationSyntax(ParenthesizedVariableDesignationSyntaxWrapper designation, ProgramState programState) ## at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitDeclarationExpression(DeclarationExpressionSyntaxWrapper wrapper, ProgramState programState) ## at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitInstruction(ExplodedGraphNode node) ## at SonarAnalyzer.SymbolicExecution.Sonar.AbstractExplodedGraph.Walk() ## at SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner.AnalyzeSonar(SyntaxNodeAnalysisContext context, Boolean isTestProject, Boolean isScannerRun, SyntaxNode body, ISymbol symbol) ---> System.ArgumentNullException: Value cannot be null.
Parameter name: key
at System.Collections.Immutable.Requires.FailArgumentNullException(String parameterName)
at System.Collections.Immutable.ImmutableDictionary`2.SetItem(TKey key, TValue value)
at SonarAnalyzer.SymbolicExecution.Sonar.ProgramState.StoreSymbolicValue(ISymbol symbol, SymbolicValue newSymbolicValue)
at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitParenthesizedVariableDesignationSyntax(ParenthesizedVariableDesignationSyntaxWrapper designation, ProgramState programState)
at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitDeclarationExpression(DeclarationExpressionSyntaxWrapper wrapper, ProgramState programState)
at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitInstruction(ExplodedGraphNode node)
at SonarAnalyzer.SymbolicExecution.Sonar.AbstractExplodedGraph.Walk()
at SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner.AnalyzeSonar(SyntaxNodeAnalysisContext context, Boolean isTestProject, Boolean isScannerRun, SyntaxNode body, ISymbol symbol)
--- End of inner exception stack trace ---
at SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner.AnalyzeSonar(SyntaxNodeAnalysisContext context, Boolean isTestProject, Boolean isScannerRun, SyntaxNode body, ISymbol symbol)
at SonarAnalyzer.Rules.SymbolicExecutionRunnerBase.Analyze(SonarAnalysisContext sonarContext, SyntaxNodeAnalysisContext nodeContext, SyntaxNode body, ISymbol symbol)
at SonarAnalyzer.Rules.SymbolicExecutionRunnerBase.Analyze[TNode](SonarAnalysisContext analysisContext, SyntaxNodeAnalysisContext context, Func`2 getBody)
at SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner.<>c__DisplayClass5_0.<Initialize>b__0(SyntaxNodeAnalysisContext c)
at SonarAnalyzer.Helpers.DiagnosticAnalyzerContextHelper.<>c__DisplayClass1_0`1.<RegisterSyntaxNodeActionInNonGenerated>b__0(SyntaxNodeAnalysisContext c)
at SonarAnalyzer.Helpers.SonarAnalysisContext.<>c__DisplayClass47_0`1.<RegisterContextAction>b__0(TContext c)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.<>c__62`1.<ExecuteSyntaxNodeAction>b__62_0(ValueTuple`2 data)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock[TArg](DiagnosticAnalyzer analyzer, Action`1 analyze, TArg argument, Nullable`1 info)
-----
System.ArgumentNullException: Value cannot be null.
Parameter name: key
at System.Collections.Immutable.Requires.FailArgumentNullException(String parameterName)
at System.Collections.Immutable.ImmutableDictionary`2.SetItem(TKey key, TValue value)
at SonarAnalyzer.SymbolicExecution.Sonar.ProgramState.StoreSymbolicValue(ISymbol symbol, SymbolicValue newSymbolicValue)
at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitParenthesizedVariableDesignationSyntax(ParenthesizedVariableDesignationSyntaxWrapper designation, ProgramState programState)
at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitDeclarationExpression(DeclarationExpressionSyntaxWrapper wrapper, ProgramState programState)
at SonarAnalyzer.SymbolicExecution.Sonar.SonarExplodedGraph.VisitInstruction(ExplodedGraphNode node)
at SonarAnalyzer.SymbolicExecution.Sonar.AbstractExplodedGraph.Walk()
at SonarAnalyzer.Rules.CSharp.SymbolicExecutionRunner.AnalyzeSonar(SyntaxNodeAnalysisContext context, Boolean isTestProject, Boolean isScannerRun, SyntaxNode body, ISymbol symbol)
-----
Suppress the following diagnostics to disable this analyzer: S1944, S2053, S2222, S2259, S2583, S2589, S3329, S3655, S3900, S3966, S4158, S5773 MyService.API 1 Active
This is in a controller that has approximately
[HttpPatch]
[Route("{someDate:route-date}")]
public async Task<IActionResult> MyAction(DateTime someDate, [Required [FromBody] SomeModel body)
{
return someBool ? await Method1(someDate, body) : await Method2(someDate, body);
}
private Task<IActionResult> Method1(DateTime someDate, [Required [FromBody] SomeModel body)
{
// do stuff
}
private Task<IActionResult> Method2(DateTime someDate, [Required [FromBody] SomeModel body)
{
// do stuff
}
I am getting an AD0001 on the declaration line of Method1 and another for Method2
How can I resolve this? I have seen other reports of AD0001 (for different reasons( and suggested “solutions” describe how to disable the warning for this - but that is hiding the problem rather than resolving it.