什么是一个很好的源代码搜索引擎?

时间:2008-09-19 23:38:53

标签: development-environment search-engine code-search-engine

我工作的代码库很庞大,并且需要大约20分钟。我正在寻找一个很好的基于网络的源代码搜索引擎..类似于koders.com的内联网版本。

我发现的唯一一件事是Krugle企业版,它没有发布价格......如果你不得不问,你买不起。

我真的更喜欢一个普通的旧搜索引擎,没有其他许多花里胡哨的东西。

源代码主要是ASP.NET / C#和Javascript。

11 个答案:

答案 0 :(得分:9)

我建议OpenGrok。还有一些其他引擎,here是对它们的快速回顾。

答案 1 :(得分:6)

20分钟太离谱了!这些天我正在使用一百万个+源代码库,并且最多需要花费几秒钟(我使用ack)。我们的主目录存储在文件服务器上并通过NFS挂载,为了加快grepping,我们在登录文件服务器时执行此操作。我不确定NFS需要多长时间,但肯定会更长。

出于性能原因,我们还在登录文件服务器时执行源代码控制操作。

答案 2 :(得分:3)

在Linux上我使用GNU ID Utils它们具有与grep类似的功能,但是从索引开始工作,因此它们非常快。你运行mkid来创建一个索引,然后运行其他一个实用程序,例如“gid”,这是grep的ID Tools版本,可以在整个索引中进行grep。我有一个偶尔运行mkid的cron作业。

ID工具也适用于Windows,无论是使用cygwin还是standard windows program

答案 3 :(得分:2)

Lxr在大型代码库中运行良好,正如linux kernel所证明的那样。我认为这只适用于C(你没有指定使用的语言)。

答案 4 :(得分:1)

如果你有这么多的源代码,你可能需要花点时间设置一个搜索引擎来索引它。我会推荐Lucene - 它是免费的,它的速度很快,很容易为任何有编程经验的人设置任何内容的强大索引。

http://lucene.apache.org/

答案 5 :(得分:1)

既然你说的是'grepping',我想你并不是对命令行解决方案不感兴趣。

ctags这样的工具将索引和搜索C#和JavaScript代码库(以及许多其他代码库)。

关于ctags非常简洁的是,它可以与vim结合使用taglist插件来允许源代码浏览,或者使用vim omnicomplete来启用代码完成。

答案 6 :(得分:1)

我已经使用cs2project一段时间了,它是一个基于Lucene.NET的开源c#代码搜索引擎。不幸的是,它不再被开发。

答案 7 :(得分:1)

之前我使用过OpenGrok,对此非常满意。 另一种选择是:

<强> Gonzui http://gonzui.sourceforge.net/screenshots.html

http://gonzui.sourceforge.net/screenshots/printf-2-mini.png

答案 8 :(得分:0)

请参阅我们的SD Source Code Search Engine。语言识别和处理多种语言(C,C ++,C#,Java,ObjectiveC,PHP,VB.net,VB6,Ada,Fortran,COBOL,......)。在Linux Kernal上搜索需要2.8秒(730万行,18000多个文件)。

因为它具有语言感知能力,所以它可以忽略与您的搜索无关的语言元素(例如,如果您只对标识符或表达式感兴趣,则忽略注释,格式和空格)。它可以搜索标识符,字符串和注释。如果你真的想这样做,它有一个完整的正则表达式字符串搜索选项。

它已被用于数百万行代码的系统,在我们知道的一个案例中,系统拥有超过一百万个文件。

答案 9 :(得分:0)

我有类似的问题。我在一家软件公司工作,该项目涉及c#,c ++,asp.net,db脚本甚至vb6源代码(是的,当没有像Visual Studio的后期版本那样没有解决方案的概念时,编译多个vb6项目很头疼。 ..)

我一直在使用Visual Studio 2010,但必须使用第三方文本编辑器来搜索db脚本和vb6源代码。

我做了一些研究,找到了KodeEx(http://kodeex.com)并且很高兴。它是一种基于索引的源代码搜索工具。你不需要构建任何东西(就像其他人建议你用Lucene做的那样。顺便说一下,Lucene是一个很好的开源项目=))。只需安装它,让它为您的项目编制索引。之后,它通常会在几秒钟内返回结果。

答案 10 :(得分:-1)

也许您应该在支持符号标记的编辑器或IDE中投入一些时间和/或金钱。您只需要在整个源树中进行一次传递以对其进行标记,然后编辑器使用索引搜索或地图查找来查找符号定义或引用。

支持标记的编辑器或IDE的一些示例是Eclipse,Visual Studio,SlickEdit。某些IDE可能会调用功能符号浏览器或类似功能。