在解决方案中递归查找引用 (Visual Studio)
Recursively Find References in Solution (Visual Studio)
对于给定的方法名x,我想找到调用x的方法的所有方法名。我想递归地执行此操作,直到到达我的代码的入口点。我在 this post 中找到了使用 Roslyn 为 C# 代码执行此操作的方法,但我希望该解决方案尽可能与语言无关。它应该适用于 C#、C++、Python,...我正在用 C# 编写此工具,需要一个编程解决方案。任何帮助是极大的赞赏。谢谢!
我不相信有任何与语言无关的方式可以做到这一点。该工具至少必须了解语言的结构、函数或方法的外观以及函数或方法调用的外观。
编辑说明:
您可能会发现 Terence Parr 博士的 ANTLR 解析器生成器很有用:
ANTLR 可以针对 C#,并且为它编写了大量语法,包括 C++ 和 python。
使用它可以让您在运行时选择解析器。解析器生成的 AST(抽象语法树)将具有相同的结构,因此识别 function/method 调用将是一个树遍历。
可能需要为每个解析器的输出提供适配器,以便每个解析器生成的 AST 对您关心的事物使用通用名称。
对于给定的方法名x,我想找到调用x的方法的所有方法名。我想递归地执行此操作,直到到达我的代码的入口点。我在 this post 中找到了使用 Roslyn 为 C# 代码执行此操作的方法,但我希望该解决方案尽可能与语言无关。它应该适用于 C#、C++、Python,...我正在用 C# 编写此工具,需要一个编程解决方案。任何帮助是极大的赞赏。谢谢!
我不相信有任何与语言无关的方式可以做到这一点。该工具至少必须了解语言的结构、函数或方法的外观以及函数或方法调用的外观。
编辑说明: 您可能会发现 Terence Parr 博士的 ANTLR 解析器生成器很有用:
ANTLR 可以针对 C#,并且为它编写了大量语法,包括 C++ 和 python。
使用它可以让您在运行时选择解析器。解析器生成的 AST(抽象语法树)将具有相同的结构,因此识别 function/method 调用将是一个树遍历。
可能需要为每个解析器的输出提供适配器,以便每个解析器生成的 AST 对您关心的事物使用通用名称。