我正在努力学习如何使用罗斯林,并且我不断遇到一些障碍,这些障碍需要花费很多心思来弄清楚如何绕过。目前,专注于试验以了解什么是可能的。
void Method1(){}
void Method2()
{
Method1();
}
void Method3()
{
Method2();
}
如果我想检查Method2是否调用Method1,这很简单,因为我只看它的语法树。据我所知,如果我正在查看Method3但我想找到Method2,我应该使用语义树,因为Method2可能在不同的文件/名称空间/等中。
我的问题是,如果我只有Method2的IMethodSymbol,有没有办法找出Method2是否调用Method1?
感谢您的帮助
答案 0 :(得分:2)
如果我理解正确,您知道如何从MethodDeclarationSyntax
Method3
到IMethodSymbol
获取Method2
,MethodDeclarationSyntax
获取Method2
} Method1
,但您不知道如何从IMethodSymbol
获取Method2
到MethodDeclarationSyntax
到Method2
。
为此,您可以使用DeclaringSyntaxReferences
:
var method2Syntax = symbol.DeclaringSyntaxReferences.Single().GetSyntax();