什么是帮助浏览/遵循C代码的好工具?

时间:2008-09-16 00:30:45

标签: c browser code-search-engine

我有时需要修改OSS代码或其他人的代码(通常是基于C的,但有时候是C ++ / Java)并且发现自己“grep”类型,函数声明等的标题,因为我遵循代码流并尝试了解系统。是否有一个很好的工具可以帮助代码浏览。我希望能够点击一个类型并被带到声明或点击一个函数名称并被带到它的实现。我在Linux机器上,所以像“只使用Visual Studio”这样的回复不一定适合我。谢谢!

27 个答案:

答案 0 :(得分:13)

你无法获得比SourceInsight更好的东西。

答案 1 :(得分:7)

我听说过关于OpenGrok的惊人事情。我知道在我雇佣的地方有另一个团队使用它,他们发现它非常方便。从其网站:

  

OpenGrok是一个快速且可用的来源   代码搜索和交叉引用   发动机。它可以帮助您搜索,   交叉引用和导航你的   源树。它可以理解各种   程序文件格式和版本   控制历史,如Mercurial,Git,   SCCS,RCS,CVS,Subversion,Teamware,   ClearCase,Perforce和Bazaar。在   换句话说,它可以让你理解   (深刻理解)开放   源,因此名称为OpenGrok。它是   用Java编写。

答案 2 :(得分:7)

我将Vimctagstaglist插件一起使用。您可以将光标移动到变量名称,并使用组合键将它带到变量的声明(和返回)。 Taglist还将显示侧栏中所有功能,类等的概述。

答案 3 :(得分:7)

Doxygen可以生成一组包含源浏览器的网页。不像IDE那样华丽,但它只需要一个Web浏览器。

答案 4 :(得分:5)

除了Java之外,Eclipse IDE还能够使用C / C ++。有关如何在IBM的Developer Works站点上为C / C ++开发配置Eclipse的write-up

编辑:为什么这会被拒绝?这是一个有效的答案。使用C / C ++插件的Eclipse将允许问题作者完成他想要做的事情。我不是唯一一个建议,但其他人没有被投票。那为什么这个被投票呢?

答案 5 :(得分:3)

我在内核空间做了一些,并继续回到范围。

例如:

$ cd / usr / src / redhat / BUILD / kernel-version

$ cscope -R -p4

   Find this C symbol:
   Find this function definition:
   Find functions called by this function:
   Find functions calling this function:
   Find this text string:
   Change this text string:
   Find this egrep pattern:
   Find this file:
   Find files #including this file:

在处理某个项目时,我通常会“活在”c-scope中。我使用它来打开带有“gvim”(我的IDE)的文件,编辑东西,然后退回到c-scope,它帮助我保持任务集中。

我相信cscope可以配置为与vim和emacs一起使用,虽然我看过人们也使用其他编辑器。

祝你好运。

答案 6 :(得分:2)

VimCtags适合我。

答案 7 :(得分:1)

如果您参与混合了HLL代码和大会的项目我会推荐Opengrok,我最近转移到Opengrok并发现它很棒,Opengrok + Firefox + Extensions是我认为最好的组合,像Scrapbook等一些firefox扩展允许你在浏览代码时修改和添加注释,这主要是通过代码“浏览”而不是动态修改它。

答案 8 :(得分:1)

转到Doxygen并将EXTRACT_ALL设置为YES。它简单而强大且简单。一旦你喜欢它,你就可以在所有平台和语言中坚持下去。

http://www.doxygen.org

答案 9 :(得分:1)

Doxygen很棒。我不得不遇到过几个我以前从未参与过的遗留代码库,并且它非常棒(即使代码库没有使用Doxygen格式记录)。

答案 10 :(得分:1)

我支持使用doxygen

这个工具生成了一堆javadoc,就像一堆html页面一样,允许索引所有代码,浏览它(这个函数在哪里使用,以及由哪个函数...),就像在IDE中一样。它很容易使它工作。

我曾经维护过15个C项目的C代码的2000个文件。我花了一个小时用doxygen索引代码,为其他开发人员提供生成的doc。 (我知道,这个短语听起来像是一个补充,但这是真的......这真是一个很好的工具)

一个很棒的工具,适用于所有类C语言。

答案 11 :(得分:1)

ctags非常有用。涉及两个步骤。首先在所有源和包含目录上运行程序ctags。这将在本地目录中创建名为“tags”的文件。如果所有源都在一个目录中,ctags * .c * .h就可以了。在多个目录中使用source时,值得在多个位置运行ctags。然后,在vi中,将光标放在任何函数上,定义的类型或变量使用ctl-]来转到该实体的定义。如果您使用的是emacs,请使用etags。

答案 12 :(得分:1)

如果您正在寻找简单且无处不在的内容,请尝试etags。它不会像重量级工具那么好,但它几乎所有东西都适用于emacs。使用ctags作为vi。

答案 13 :(得分:0)

我使用kscope,它在后台使用cscope,但也提供了功能列表等。似乎也很好地处理像linux内核这样的大型项目。该 kscope homepage对其所做的和不做的有一个很简洁的描述。

答案 14 :(得分:0)

cscope一直是我的最爱。还有cbrowser,但我还没试过。 ctags也经常使用。

答案 15 :(得分:0)

任何IDE都可以正常工作。 Netbeans和Eclipse是基​​于Java的,但有C / C ++插件

答案 16 :(得分:0)

我使用Anjuta IDE。不错。不确定它与Eclipse IDE的比较。

答案 17 :(得分:0)

我使用Understand for C++。这是处理大量代码的非常方便的工具。它还可以计算代码统计信息并绘制调用图。 必须!

答案 18 :(得分:0)

我使用doxygen取得了巨大成功。为了获得最佳结果(特别是在为c ++创建文档时),请在doxygen配置文件中安装graphviz并启用。

这将自动生成链接到其他html文档的依赖关系图和类图。

答案 19 :(得分:0)

即使您不是开发人员,也请选择Source Insight

如果你是,它必须有:)

答案 20 :(得分:0)

我没有直接使用它,但我使用了lxr创建的网站,并认为它非常方便。它使用指向交叉引用函数和文件名的链接将项目转换为行号和交叉引用的HTML文件。有一些项目源的例子用它here索引。

似乎没有比2006年更新的版本,但它可能仍然可以满足您的需求。

答案 21 :(得分:0)

cscope的。 (想要修改其他范围的帖子,但我还没有业力)。

  • 全局搜索和替换
  • 找到一个名为
  • 的函数的所有地方
  • 找到函数调用的所有地方
  • 查找包含此文件的文件。

非常简单的用法:$ cscope -R

如果您不了解vi,请将您的EDITOR和VIEWER环境变量更改为首选编辑器。

答案 22 :(得分:0)

我发现ID Utils非常方便。它就像一个即时的递归grep。有许多vim食谱可以用它。

答案 23 :(得分:0)

IntelliJ作为Linux下的源浏览器非常好用。它对源和函数声明之间的跳转有很好的支持。没有尝试使用C / C ++代码,但它适用于Ruby和Java。

答案 24 :(得分:0)

我使用并喜欢免费软件工具GNU global

答案 25 :(得分:0)

可以找到语言敏感的源代码搜索引擎 在SD Source Code Search Engine。它可以同时处理多种语言。 可以对特定语言中的模式执行搜索, 或跨语言的模式(例如“查找涉及TAX的标识符”)。 通过对语言令牌敏感,减少了误报的数量, 为用户节省时间。它了解C,C ++,C#,COBOL,Java,ECMAScript,Java,XML,Verilog,VHDL以及许多其他语言。

答案 26 :(得分:0)

我使用来自here的Source-Navigator(TM)。这是非常令人印象深刻,并帮助很多。它是用Tcl / Tk编写的,可用作windows的可执行文件,也可以作为源代码在* nix上构建。