RefactoringEssentials
RefactoringEssentials copied to clipboard
Wrong assumption in FunctionNeverReturnsAnalyzer analyzer
ERROR [2017-03-10 09:53:34Z]: Exception in diagnostic analyzer AD0001:Analyzer 'RefactoringEssentials.CSharp.Diagnostics.FunctionNeverReturnsAnalyzer' threw an exception of type 'System.NotSupportedException' with message 'Specified method is not supported.'.
System.NotSupportedException: Specified method is not supported.
at RefactoringEssentials.Util.Analysis.ControlFlowGraphBuilder+NodeCreationVisitor.DefaultVisit (Microsoft.CodeAnalysis.SyntaxNode node) [0x00001] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/Util/Analysis/ControlFlow.cs:352
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitForEachVariableStatement (Microsoft.CodeAnalysis.CSharp.Syntax.ForEachVariableStatementSyntax node) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.Syntax.ForEachVariableStatementSyntax.Accept (Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor visitor) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.Visit (Microsoft.CodeAnalysis.SyntaxNode node) [0x00003] in <f967c22cfa504c398098a23927710102>:0
at RefactoringEssentials.Util.Analysis.ControlFlowGraphBuilder+NodeCreationVisitor.HandleStatementList (System.Collections.Generic.IEnumerable`1[T] statements, RefactoringEssentials.Util.Analysis.ControlFlowNode source) [0x00050] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/Util/Analysis/ControlFlow.cs:373
at RefactoringEssentials.Util.Analysis.ControlFlowGraphBuilder+NodeCreationVisitor.VisitBlock (Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax node) [0x00001] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/Util/Analysis/ControlFlow.cs:358
at Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax.Accept (Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor visitor) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.Visit (Microsoft.CodeAnalysis.SyntaxNode node) [0x00003] in <f967c22cfa504c398098a23927710102>:0
at RefactoringEssentials.Util.Analysis.ControlFlowGraphBuilder.BuildControlFlowGraph (Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax statement, Microsoft.CodeAnalysis.SemanticModel typeResolveContext, System.Func`3[T1,T2,TResult] resolver, System.Threading.CancellationToken cancellationToken) [0x0005a] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/Util/Analysis/ControlFlow.cs:188
at RefactoringEssentials.Util.Analysis.ControlFlowGraphBuilder.BuildControlFlowGraph (Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax statement, Microsoft.CodeAnalysis.SemanticModel resolver, System.Threading.CancellationToken cancellationToken) [0x00039] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/Util/Analysis/ControlFlow.cs:171
at RefactoringEssentials.Util.Analysis.ReachabilityAnalysis.Create (Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax statement, Microsoft.CodeAnalysis.SemanticModel resolver, RefactoringEssentials.Util.Analysis.ReachabilityAnalysis+RecursiveDetectorVisitor recursiveDetectorVisitor, System.Threading.CancellationToken cancellationToken) [0x00007] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/Util/Analysis/ReachabilityAnalysis.cs:45
at RefactoringEssentials.CSharp.Diagnostics.FunctionNeverReturnsAnalyzer+GatherVisitor.VisitBody (System.String entityType, Microsoft.CodeAnalysis.SyntaxToken markerToken, Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax body, Microsoft.CodeAnalysis.ISymbol symbol, Microsoft.CodeAnalysis.CSharp.SyntaxKind accessorKind) [0x0001e] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/FunctionNeverReturnsAnalyzer.cs:115
at RefactoringEssentials.CSharp.Diagnostics.FunctionNeverReturnsAnalyzer+GatherVisitor.VisitMethodDeclaration (Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax node) [0x0001a] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/FunctionNeverReturnsAnalyzer.cs:80
at Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax.Accept (Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor visitor) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit (Microsoft.CodeAnalysis.SyntaxNode node) [0x0001c] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.DefaultVisit (Microsoft.CodeAnalysis.SyntaxNode node) [0x00038] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitClassDeclaration (Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax node) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept (Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor visitor) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit (Microsoft.CodeAnalysis.SyntaxNode node) [0x0001c] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.DefaultVisit (Microsoft.CodeAnalysis.SyntaxNode node) [0x00038] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitCompilationUnit (Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax node) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept (Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor visitor) [0x00000] in <f967c22cfa504c398098a23927710102>:0
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit (Microsoft.CodeAnalysis.SyntaxNode node) [0x0001c] in <f967c22cfa504c398098a23927710102>:0
at RefactoringEssentials.CSharp.Diagnostics.FunctionNeverReturnsAnalyzer+<>c__DisplayClass3_0.<Initialize>b__1 (Microsoft.CodeAnalysis.Diagnostics.SyntaxTreeAnalysisContext ctx) [0x00063] in /Users/davidkarlas/GIT/MD3/monodevelop/main/external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/FunctionNeverReturnsAnalyzer.cs:43
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor+<>c__DisplayClass41_0.<ExecuteSyntaxTreeActionsCore>b__0 () [0x00075] in <efb913359d8b40dfacbaf2dcae60ed49>:0
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock (Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer analyzer, System.Action analyze, System.Nullable`1[T] info) [0x00020] in <efb913359d8b40dfacbaf2dcae60ed49>:0
Comment above exception says: // We have overrides for all possible statements and should visit statements only. which seems wrong
Code where I reproduced:
class MyTest
{
public void Test()
{
foreach(MyTest
}
}