【问题标题】:Roslyn - Find out if called method calls methodRoslyn - 找出被调用的方法是否调用方法
【发布时间】:2017-04-09 05:16:25
【问题描述】:

我正在努力学习如何使用 Roslyn,但我不断遇到障碍,需要大量思考才能弄清楚如何解决问题。目前,专注于尝试以了解可能的情况。

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

如果我想检查 Method2 是否调用 Method1,这很简单,因为我只看它的语法树。据我了解,如果我正在查看 Method3 并且我想找到 Method2,我应该使用语义树,因为 Method2 可能位于不同的文件/命名空间/等中。

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

感谢您的帮助

【问题讨论】:

    标签: c# roslyn


    【解决方案1】:

    如果我理解正确,你知道如何从MethodDeclarationSyntax 到Method3 到IMethodSymbol 到Method2 以及从MethodDeclarationSyntax 到Method2 到Method1,但你不知道如何从IMethodSymbol 到Method2 到MethodDeclarationSyntax 到Method2。

    为此,您可以使用DeclaringSyntaxReferences:

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

    【讨论】:

    • 正是我想要的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多