Roslyn - 查找被调用的方法是否调用了其他方法

3

我正在尝试学习如何使用Roslyn,但一直遇到障碍,需要花费很多时间思考如何克服。目前,我专注于实验以了解可能性。

void Method1(){}
void Method2()
{
    Method1();
}
void Method3()
{
    Method2();
}

如果我想检查Method2是否调用了Method1,那么很容易,因为我只需要查看它的语法树。但是如果我正在查看Method3并且想要找到Method2,我应该使用语义树,因为Method2可能在不同的文件/命名空间等中。我的问题是,如果我只有Method2的IMethodSymbol,有没有办法找出Method2是否调用了Method1?谢谢任何帮助。
1个回答

5
如果我理解正确,您知道如何从Method3MethodDeclarationSyntax获取Method2IMethodSymbol,并且可以从Method2MethodDeclarationSyntax获取Method1,但是您不知道如何从IMethodSymbolMethod2获取MethodDeclarationSyntax来获取Method2

要实现这一点,您可以使用DeclaringSyntaxReferences

var method2Syntax = symbol.DeclaringSyntaxReferences.Single().GetSyntax();

正是我所需要的!谢谢! - James Huxley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接