如何为 Delphi 项目生成反向调用树?
有没有一种方法可以快速搜索项目中某个特定函数的代码路径的完整列表,以便找出某个特定的上层函数是否直接或间接调用它?例如,确定 MyLowLevelFunction
是否可从 TargetFunction
访问的一些可能输出:
代码路径 1
ModuleA2.TopLevelFunction |--ModuleA1.SomeFunction |----Utility.MyLowLevelFunction
代码路径 2
ModuleB2.TopLevelFunction |--TargetModule.TargetFunction <-- This calls MyLowLevelFunction indirectly |----ModuleB1.SomeFunction |------Utility.MyLowLevelFunction
Is there a way to quickly search for the complete list of code paths to one particular function in my project, in order to find out whether some certain upper-lever function calls it, either directly or indirectly? For example, some possible output to determine whether MyLowLevelFunction
is reachable from TargetFunction
:
Code path 1
ModuleA2.TopLevelFunction |--ModuleA1.SomeFunction |----Utility.MyLowLevelFunction
Code path 2
ModuleB2.TopLevelFunction |--TargetModule.TargetFunction <-- This calls MyLowLevelFunction indirectly |----ModuleB1.SomeFunction |------Utility.MyLowLevelFunction
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Peganza 的 Pascal 分析器有一个反向调用树报告。我是一名客户,对此非常满意,尽管我从未使用过该特定类型的报告,更喜欢简单的 相反,交叉引用报告,它也有。
有趣的是,静态分析工具将无法找到间接调用,例如通过事件回调。
Pascal analyzer by Peganza has a Reverse call tree report. I am a customer and very happy with it, although I have never used that particular type of report, preferring a simple cross-ref report instead, which it also has.
As an interesting side-note static analysis tools will fail to find calls that are indirect, such as via an event callback.