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

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

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

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

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

我听说过OpenGrok的惊人之处 。 我知道在我工作地点的另一个团队使用它,他们发现它非常方便。 从其网站:

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

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

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

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

例如:

$ 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一起使用,虽然我看过人们也使用其他编辑器。

祝你好运。

Vim和Ctags适合我。

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

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

我支持使用doxygen 。

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

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

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

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

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

http://www.doxygen.org

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

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

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

似乎没有比2006更新的版本,但它可能仍然适用于您想要的。

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

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

我使用kscope,它在后台使用cscope,但也提供了function列表等。 似乎也很好地处理像Linux内核这样的大型项目。 kscope主页对其function和不执行function进行了简明扼要的描述。

cscope一直是我的最爱。 还有cbrowser,但我还没试过。 ctags也用了很多。

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

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

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

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

如果你是,它必须有:)

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

  • 全球搜索和替换
  • 查找调用函数的所有位置
  • 找到函数调用的所有地方
  • 查找包含此文件的文件。

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

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

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

我使用并喜欢自由软件工具GNU global 。

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

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