【问题标题】:Text search tool for large source code set with up to date pre-indexing? [closed]具有最新预索引的大型源代码集的文本搜索工具? [关闭]
【发布时间】:2009-05-07 11:17:06
【问题描述】:

我正在维护一些中型 C++ 项目的分支(每个分支大约 15k 个文件)。很多时候,我必须在所有项目文件中搜索给定的字符串或正则表达式。目前我正在使用 Total Commander,它具有我想要的所有功能(区分大小写、正则表达式、文件名掩码),但是这个工具每次都会扫描所有文件,所以它需要一些时间。

您知道任何文本搜索工具,它可以预先索引整个源代码树并允许快速查找模式吗?返回所有匹配的文件是必须的,预览找到的模式环境会很好。当然,索引必须在发生变化时立即更新。

Visual Studio 搜索是不够的,它只扫描源文件(不是元数据也不是自定义资源)。

这样的工具存在吗?我使用的是 Windows XP。

编辑:我发现了非常有用的工具,请参阅我自己的答案

【问题讨论】:

    标签: regex full-text-search code-search-engine


    【解决方案1】:

    我在这里找到了非常有用的工具:http://code.google.com/p/ndexer/

    我推荐给大家!

    【讨论】:

      【解决方案2】:

      cscope 能够索引 c 文件,在某种程度上也能够索引 c++。 我个人使用的是 KDE 前端 KScope,它比 cscope 的 ui 用户友好。

      除此之外,您可能还想看看OpenGrok

      【讨论】:

      • 需要 Windows 解决方案,已编辑问题。此外,必须搜索所有文件(也包括二进制文件),而不仅仅是源代码文件。
      【解决方案3】:

      我不确定(我没有经验),但我会试试 Eclipse CDT。它为您的所有源编制索引以快速查找符号,类似于 Eclipse JDT(Java 工具)。

      【讨论】:

        【解决方案4】:

        回避该问题的一种直接方法是将所有源代码放在 RAM 磁盘上。通过以这种方式加速文件 IO,您将看到性能大幅提升,而无需更改工具链。

        【讨论】:

        • 不一定有帮助。无论如何,所有现代操作系统都会缓存磁盘访问,所以在第一次搜索之后,这些东西已经在 RAM 中了。
        • 每个分支约 500 MB 源 - 太大而无法在 RAM 磁盘(WinXP 32 位)中保留一些分支,太大而无法按需复制。
        【解决方案5】:

        您可以尝试 Google 桌面搜索,或者将 Luceneclucene(移植到 c++ 的 lucene)作为通用索引工具。

        【讨论】:

        • 谷歌桌面搜索是否支持将索引限制在选定目录、允许多个数据库、正则表达式搜索等?
        【解决方案6】:

        请看 http://aaron.oirt.rutgers.edu/myapp/docs/W1300.testAndDemo 并点击“搜索演示”链接到代码树搜索演示。
        这将完全符合您的要求 它是 WHIFF 的标​​准演示组件。你将会有 添加 Pygments 插件以从中提取感兴趣的字符串 您的二进制文件(或只是将整个文件读取为“文本”)——开箱即用 索引器将忽略 Pygments 无法识别的文件。 有一个简单的技巧可以让它“吃掉所有东西”——如果你知道,请告诉我 想要更多信息。

        描述了搜索的安装和命令行界面 在 http://aaron.oirt.rutgers.edu/myapp/docs/W1300_1000.search

        【讨论】:

        • 很遗憾,Web 应用程序不是我想要的。
        • 其实web界面只是一个门面。还有命令行界面。
        【解决方案7】:

        Windows 索引服务似乎符合您的所有条件。

        【讨论】:

          【解决方案8】:

          我知道您不一定需要 Web 应用,但请尝试 Open Grok

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-28
            • 1970-01-01
            • 2012-10-09
            • 2013-11-26
            • 1970-01-01
            • 2011-02-21
            • 1970-01-01
            • 2010-09-11
            相关资源
            最近更新 更多