14

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

4

27 回答 27

13

您无法得到比SourceInsight更好的东西。

于 2008-09-16T00:31:42.143 回答
10

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

于 2008-09-16T00:34:12.967 回答
7

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

于 2008-09-16T00:42:09.110 回答
7

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

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

于 2008-09-16T00:31:48.027 回答
5

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

编辑:为什么这被否决了?这是一个有效的答案。带有 C/C++ 插件的 Eclipse 将允许问题作者做他想做的事情。我不是唯一一个提出建议的人,但其他人都没有被否决。那么为什么这个被否决了呢?

于 2008-09-16T00:34:16.303 回答
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 一起使用,尽管我看到人们也使用其他编辑器。

祝你好运。

于 2008-09-16T00:55:53.647 回答
2

VimCtags适合我。

于 2008-09-16T00:35:02.963 回答
1

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

于 2008-09-16T03:22:09.287 回答
1

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

http://www.doxygen.org

于 2009-05-07T02:44:56.313 回答
1

多氧是美妙的。我必须处理几个我以前从未参与过的遗留代码库,这真是太棒了(即使代码库没有使用 Doxygen 格式记录)。

于 2008-09-16T15:23:24.670 回答
1

我支持使用doxygen

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

我曾经维护一个 15 年的 C 项目的 2000 个 C 代码文件。我花了一个小时用 doxygen 索引代码,并为其他开发人员提供生成的文档。(我知道,这句话听上去像是加法,但确实是这样……真是个不错的工具)

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

于 2008-09-16T07:38:29.653 回答
1

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

于 2008-09-16T00:34:56.943 回答
1

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

于 2011-04-28T11:11:32.207 回答
0

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

于 2008-09-16T02:17:43.497 回答
0

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

于 2009-08-22T20:48:59.053 回答
0

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

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

于 2008-09-16T00:37:06.483 回答
0

我使用 Anjuta IDE。不错。不确定它与 Eclipse IDE 相比如何。

于 2008-09-16T00:40:07.023 回答
0

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

于 2008-09-16T00:46:21.237 回答
0

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

于 2009-11-04T07:11:14.083 回答
0

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

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

于 2008-09-16T10:22:05.360 回答
0

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

如果你是,它是必须的:)

于 2008-09-16T10:24:43.500 回答
0

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

于 2009-04-01T00:09:30.683 回答
0

IntelliJ 作为 Linux 下的源代码浏览器相当不错。它对在源和函数声明之间跳转提供了很好的支持。没有用 C/C++ 代码尝试过,但它适用于 Ruby 和 Java。

于 2008-09-16T00:35:16.473 回答
0

我使用 kscope,它在后台使用 cscope,但也提供函数列表等。似乎也能很好地处理像 linux 内核这样的大型项目。kscope 主页对它做什么和不做什么有一个很好的简明描述。

于 2008-09-16T01:02:42.257 回答
0

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

于 2008-09-16T07:48:11.767 回答
0

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

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

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

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

于 2008-09-17T00:38:24.477 回答
0

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

于 2009-05-07T17:16:21.520 回答