Посетитель SyntaxWalker не посещает методы
Я получил этот ходок
internal class MyWalker : CSharpSyntaxWalker
{
public int MethodCount { get; private set; }
public MyWalker() : base(Microsoft.CodeAnalysis.SyntaxWalkerDepth.Trivia)
{ }
public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
{
MyMethodCount ++;
}
public override void VisitClassDeclaration(ClassDeclarationSyntax node)
{
Class++;
Complexity++;
}
}
Я звоню Уокеру с этим кодом
var code = @"
public class foo
{
public void MyMethod()
{
}
}
";
SyntaxTree node = CSharpSyntaxTree.ParseText(source);
var root = node.GetRoot();
var walker = new MyWalker();
walker.Visit(root);
но посещение MethodDeclaration никогда не вызывается.
Чтобы убедиться, что я сравнил с SyntaxTree Analyzer, я вижу, что roslyn должен распознавать его как объявление метода.
Что мне не хватает?
1 ответ
Решение
Я нашел это. У меня не было базового вызова в методе класса посещения. так что просто моя ошибка
так и должно быть
public override void VisitClassDeclaration(ClassDeclarationSyntax node)
{
[...]
base.VisitClassDeclaration(node); // this was missing
}