是否有任何上下文相关的代码搜索工具?

时间:2010-05-20 10:42:13

标签: search language-agnostic scope

我最近在处理大量遗留代码时感到非常沮丧,我正试图熟悉这些代码。

假设我尝试搜索特定的函数调用,我得到了大量的结果,结果完全无关紧要;其中一些很容易被发现,例如评论说

// Fixed functionality in foo() so don't need to handle this here any more

但是其他人更难以手动发现,因为它们最终是来自模块中其他函数的调用,这些函数仅在某些情况下编译,或者是#if 0'的更大代码块的一部分d完整。

我想要的是一个搜索工具,可以让我搜索一个术语,并让我选择包含或排除注释掉的或#if 0'd的代码。然后,搜索结果将与#defines列表一起显示,以便使该代码段相关。

我正在使用C / C ++,但除了特定的注释语法之外,我猜这些技术应该更普遍适用。

这样的工具是否存在?

2 个答案:

答案 0 :(得分:1)

不完全是你所追求的,但我觉得这很方便。

GrepWin - 一个免费的视觉“grep”工具,用于搜索文件。

我发现它非常有用,因为:

  • 它是一个单独的应用程序(不会锁定我的编辑器)
  • 处理正则表达式
  • 快速
  • 可以指定要搜索的文件夹,以及文件类型(在此处理正则表达式)
  • 可以按文件大小限制
  • 可以包含子目录(或通过正则表达式排除)

答案 1 :(得分:1)

几乎所有体面的源浏览器都会让您转到定义函数的位置,和/或列出该函数的所有调用,并将您直接带到呼叫站点。这通常基于相当完整的源代码解析,因此它将忽略注释,预处理器排除的代码等等(实际上,至少在一种情况下,源浏览器使用的解析器几乎肯定是比编译器本身使用的更好。