最近,我们的团队继承了庞大的代码库,大约1千兆字节的c / c ++源代码。核心部分(我们实际上可能会不时修改或更新)大约650MB和57,000个文件。所以我得到了一个完美的测试用例,看看哪些源代码浏览器实际上和他们声称的一样好。以下是我的测试结果,我希望看到其他意见。我知道这个主题已经在stackoverflow中多次提出,但我对他们的任何答案都不满意(或者我错过了一些,如果是这种情况请告诉我)。顺便说一下,源代码浏览器我的意思是它可以帮助您轻松找到类/函数定义;显示调用树,交叉引用,类似的东西。
visual c ++ 2010 express edition (免费版)。太糟糕了,它不打扰任何分析工作只是抱怨它找不到头文件。顺便说一句,这就是为什么我从不喜欢visual c ++;它总是希望你以自己的方式做事,而不是让事情变得更容易。
源导航器。我几年前使用过source navigator。我发现新的名称源navigaor NG正在开发中,所以我决定尝试一下。太糟糕了,650MB代码添加到项目中,它就死了。
了解C ++ 。我看到有人建议在这里理解c ++,所以我也尝试了一下。也不好。随着1G文件添加到它的项目,它也死了。它有650MB,可以工作但不会留下深刻印象。由于它是一种商业工具,我刚刚通过它。
代码块。 1G文件将使它死亡,但650MB它可以工作。当你的鼠标指向一个函数时(例如source insight和slickedit),它不能自动显示函数定义,但是当你右键单击一个函数并选择pop时,它可以找到函数defition的大部分时间(好消息)菜单项“转到功能定义”。坏消息是,当我关闭项目并再次打开它时,仍然需要很长时间才能加载。
codelite 即可。 codelite看起来像代码块(毕竟他们都使用wxWidget)。但我发现codelite比代码块更好,因为当我重新打开已关闭的项目时,它的加载速度比代码块(650MB文件)快得多。它也可以通过弹出菜单找到功能定义。因此,如果有人想选择一个免费的c / c ++ IDE,我的投票就是代码。
cscope的即可。当我在摩托罗拉GSM部门工作时,我们使用了cscope,并且有数百万行代码。但问题是我的团队成员都不擅长vim或者emacs而我们只想要一个让我们生活更轻松的IDE(我猜这些评论可能会让某些人失望。很抱歉)
来源洞察。当然,我的测试不会错过源代码洞察力。源洞察力确实很好。但它的UI有点“丑陋”,它不支持unicode。那太糟糕了。
光滑编辑。在我的测试中,光滑的编辑和源洞察是唯一可以处理1G文件的工具,当你指向一个函数并在你输入时提供函数完成时自动显示函数定义。在我看来,光滑编辑的UI比源洞察力要好得多。我唯一的问题是它们都没有提供代码折叠(而免费的代码折叠和代码块提供)。这里有一个修正:slickedit实际上有代码折叠(在视图菜单中有选择性显示),它不是那么明显,你必须先设置选择性显示!
我不会像eclispe CDT或netbean那样尝试基于java的IDE,因为我认为他们不能处理1G文件。
总而言之,我要说的是,如果你想要一个商业工具,我会说我的投票用于slickedit(这不是一个卖点。我与光滑的编辑没有任何关系);如果你想要一个免费的,肯定会有代码。
但我想听听别人的意见。
答案 0 :(得分:2)
另一种可能性(花费时间和精力,但对于如此庞大的代码库,这是值得的)是开发自己的GCC插件或扩展来探索您的特定代码。 GCC最近的插件功能使高级用户能够根据自己的特定需求定制GCC编译器的行为。
特别是,您可能希望使用GCC MELT,这是一种专为GCC扩展而设计的高级域专用语言。 (MELT是作为GCC插件实现的,它是免费软件,GPLv3 +许可)。
免责声明,我是GCC MELT的主要作者,但我很乐意为您提供帮助。
答案 1 :(得分:2)
我们有类似的问题(1GB代码库,15k文件),实际上Eclipse CDT适用于我们,如果你给它足够的内存。专用于Eclipse的1GB RAM似乎是最佳选择。
答案 2 :(得分:0)
在启用了呼叫和协作图的情况下尝试doxygen。它甚至可以在大型项目中正常工作。
答案 3 :(得分:0)
如果您的问题只是搜索代码,也许我们的Source Code Search Engine会有所帮助。此工具使用语言结构(lexemes)索引代码库,然后提供使用该索引搜索代码库的工具,提供用于撰写查询的GUI,显示与查询的匹配,以及显示与任何选定的匹配的实际代码查询。
它适用于多种语言,包括C ++。它似乎在像Linux这样的代码库上非常有用,它有点像你看起来那么大。搜索功能可以说是“浏览”代码的简单方法。
我认为这与我对Doxygen的反对完全相同(见另一个答复中的评论)。但是,它根本不会假装进行名称解析。