具备最新预索引功能的大型源代码文本搜索工具?

4
我正在维护一个中等规模的C++项目的几个分支(每个分支大约有15k个文件)。经常需要在所有项目文件中搜索给定的字符串或正则表达式。目前我正在使用Total Commander,它具有我想要的所有功能(区分大小写、正则表达式、文件名掩码),但是这个工具每次都要扫描所有文件,所以它需要太多的时间。
您知道任何文本搜索工具,可以预先索引整个源代码树并允许快速查找模式吗?返回所有匹配的文件是必须的,找到模式周围的预览会很好。当然,当有变化时,索引必须立即更新。
Visual Studio搜索不足够,它只扫描源文件(而不是元数据或自定义资源)。
是否存在这样的工具?我正在使用Windows XP。
编辑:我找到了一个非常有用的工具,请参见我的答案。
8个回答

4

2

cscope能够索引C文件,一定程度上也支持C++。 我个人使用KDE前端KScope,它比cscope的用户界面更友好。

除此之外,你可能想看看OpenGrok


需要Windows解决方案,问题已编辑。同时必须搜索所有文件(包括二进制文件),而不仅仅是源代码文件。 - tomash

1

我不确定(我没有经验),但我建议尝试使用Eclipse CDT。它可以索引所有源代码以快速查找符号,类似于Eclipse JDT(Java工具)。


0

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


不一定会有帮助。现代操作系统都会缓存磁盘访问,因此在第一次搜索后,这些内容已经在内存中了。 - sleske
每个分支大约有500 MB的源代码,太大了,无法在RAM磁盘(WinXP 32bit)上保留几个分支,也无法按需复制。 - tomash

0
请查看http://aaron.oirt.rutgers.edu/myapp/docs/W1300.testAndDemo,并跟随“搜索演示”链接进入代码树搜索演示。
这将完全满足您的需求,并且是WHIFF的标准演示组件。您需要添加Pygments插件以从二进制文件中提取感兴趣的字符串(或者只读取整个文件作为“文本”)-开箱即用的索引器将忽略Pygments不识别的文件。 有一个简单的hack可以让它“吃掉一切”-如果您想要更多信息,请告诉我。

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


很遗憾,网络应用程序并不是我正在寻找的。 - tomash
实际上,Web界面只是一个外观。还有命令行界面。 - Aaron Watters

0
你可以尝试使用谷歌桌面搜索,或者作为通用索引工具,使用Luceneclucene(C++版的Lucene)。

谷歌桌面搜索是否支持将索引限制在选定的目录中,允许多个数据库、正则表达式搜索等功能? - tomash

0

我知道你不一定想要一个Web应用程序,但是可以试试Open Grok


0

看起来 Windows 索引服务符合您的所有条件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接