如何为Delphi项目生成反向调用树?

Jim*_*Jim 5 delphi metrics static-code-analysis

有没有办法快速搜索项目中某个特定函数的完整代码路径列表,以便找出某个某些上层函数是直接还是间接调用它?例如,一些可能的输出以确定是否MyLowLevelFunction可以从TargetFunction以下位置访问:

代码路径1

ModuleA2.TopLevelFunction
|--ModuleA1.SomeFunction
|----Utility.MyLowLevelFunction

代码路径2

ModuleB2.TopLevelFunction
|--TargetModule.TargetFunction <-- This calls MyLowLevelFunction indirectly
|----ModuleB1.SomeFunction
|------Utility.MyLowLevelFunction

War*_* P 6

Peganza的Pascal分析器有一个反向调用树报告.虽然我从未使用过那种特殊类型的报告,但我更喜欢简单的交叉引用报告,我也是客户并且非常满意.

作为一个有趣的附注,静态分析工具将无法找到间接调用,例如通过事件回调.