任何扫描代码并给出调用给定函数的函数列表的工具

时间:2012-07-14 15:45:42

标签: delphi pascal

这是我的问题,我正在整理一些我多年来修改过的旧代码并删除了redundent函数,

我可以慢慢地做到这一点将其注释掉,看看编译器是否抛出错误。 但我只是想知道是否有任何工具可以扫描代码并给出调用给定函数的函数列表。

我看过ge-experts& icarus,但他们只在单位和级别这样做。不归功能的课程。

欢迎任何建议, 非常感谢,Brian

5 个答案:

答案 0 :(得分:6)

最新版本的Delphi通过上下文菜单或Ctrl-Shift-Enter提供“搜索参考”。这比简单的“文件搜索”更有优势,它只能找到对游标下当前函数的引用,而不是任何具有相同名称的函数或其他标识符。

答案 1 :(得分:6)

编译您的项目。然后,在IDE中,那些被访问的行(而不是死代码)将在左边距中有一个蓝点:

enter image description here

答案 2 :(得分:4)

没有一种方法是完美的,下面这些方法的限制是:

  • .MAP文件将包含链接器无法消除的函数(例如,代码触及的类中方法的覆盖)
  • 它只会为您提供方法名称,但如果方法重载,可以使用这些方法的多个版本

使用.MAP文件的最大优点是它们比代码编辑器中的蓝点更容易扫描。

所以它确实回答了你提出功能列表的问题。但那可能实际上并不是你追求的目标(:

使用.MAP文件的方法:

  • 更改您的项目以包含详细的.MAP文件
  • 重建您的项目
  • .EXE文件的目录现在将包含.MAP文件
  • 扫描.MAP文件以查找.EXE
  • 中包含的函数名称

该.MAP文件将排除编译器和链接器消除的功能 这些都是你所拥有的“死”代码的一个很好的指示。

以类似的方式,您可以使用JDBG information。这包含更多上下文,但也需要您自己编写一些工具。

答案 3 :(得分:0)

对帕斯卡来说,这是微不足道的。首先列出所有函数,然后为每个函数在不跟随单词“function”的文本中搜索它,然后是“(”。awk将是一个很好的工具。

答案 4 :(得分:0)

如果您的Delphi版本是2007(或可能在它之前?),我强烈建议您考虑使用DGrok:尝试一下,您会看到它有多强大(演示应用会告诉您)。

正如作者所指出的那样,您仍然需要实施符号表支持,以便工具可以执行重构查找引用:滚动你自己...

如果您遇到Delphi,请不要担心,请前往 PasParse(DGrok解析器的Delphi端口,最初用C#编写!)由 Turbo87

请注意Turbo87分叉了最初的 Joe White 的Dgrok(2008年最新版本)(更新到VS2010并为LexScanner添加了一些文档)。