【问题标题】:Are there any context-sensitive code search tools?是否有任何上下文相关的代码搜索工具?
【发布时间】:2011-02-21 19:27:12
【问题描述】:

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

假设我尝试搜索一个特定的函数调用,我得到的结果是完全不相关的;其中一些很容易发现,例如评论说

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

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

我想要一个搜索工具,它可以让我搜索一个词并让我选择包含或排除注释掉的代码或#if 0'd out 代码。然后搜索结果将显示在#defines 列表旁边,这些#defines 是为了使该sn-p 代码相关。

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

这样的工具存在吗?

【问题讨论】:

    标签: search language-agnostic scope


    【解决方案1】:

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

    GrepWin - 用于搜索文件的免费可视化“grep”工具。

    我觉得它很有帮助,因为:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我通常使用 Visual Studio,但这是一个遗留项目,很难在 VS 中构建(如果我错了,请纠正我,但你不需要能够实际构建VS 中的一个项目来让源浏览工作?)它最初是用我无法访问的其他一些工具开发的,即使我这样做了,它太旧了,我怀疑它是否具有智能源浏览。实际上,我所拥有的是一大堆 C / C++ 源文件和头文件。尽管缺乏结构,是否真的有任何源浏览器(适用于 Win 或 Linux)可以智能地应对这种情况?
      • @Vicky:这是有问题的。至少 VS 中的一些源代码浏览无需实际运行编译器即可工作——它们使用单​​独的解析器进行浏览,而不是实际编译。但它仍然必须是可以解析的东西,所以工作将取决于年龄和肮脏程度。
      猜你喜欢
      • 1970-01-01
      • 2019-02-18
      • 2019-07-21
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      • 2011-01-28
      • 2012-06-05
      • 2023-03-22
      相关资源
      最近更新 更多