2017-04-08 92 views
2

我正在努力学习如何使用罗斯林,我一直在寻找路障,需要大量的思想来弄清楚如何解决。目前,侧重于试验以了解什么是可能的。罗斯林 - 找出是否调用方法调用方法

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

如果我要检查,如果方法2调用方法一,这很容易,因为我只是看它的语法树。据我了解,如果我正在查看Method3,但我想查找Method2,则应使用语义树,因为Method2可能位于不同的文件/命名空间/等。

我的问题是,如果我只有Method2的IMethodSymbol,有什么方法可以找出Method2是否调用Method1?

感谢所有帮助

回答

2

如果我理解正确的话,你知道如何从MethodDeclarationSyntax获得Method3IMethodSymbolMethod2MethodDeclarationSyntaxMethod2Method1,但你不知道如何从IMethodSymbol得到对于Method2MethodDeclarationSyntaxMethod2

要做到这一点,你可以用DeclaringSyntaxReferences

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

正是我一直在寻找!谢谢! –