可视化代码流的工具(C / C ++)

时间:2008-09-30 13:45:04

标签: c++ c code-analysis

您是否有任何工具可以简化理解C / C ++代码的任务?我们刚刚继承了其他人编写的大量软件,我们需要快速掌握它。有关可能简化此任务的工具的任何建议吗?

16 个答案:

答案 0 :(得分:27)

SourceInsightUnderstand for C++是c / c ++代码分析的最佳工具,包括流程图。

答案 1 :(得分:9)

分析软件可让您了解已调用的函数。

如果您可以使用Linux,请尝试KCachegrind

答案 2 :(得分:8)

就个人而言,我使用调试器。运行代码,看看它的作用,以及它的唯一出路。

但是,您可以通过一些文档生成器运行它(有时)帮助。一个很好的例子是doxygen

答案 3 :(得分:8)

如果打开EXTRACT_ALL选项,

Doxygen非常擅长从代码生成图表而不应用标记。您需要安装GraphViz才能获得使用HAVE_DOT设置生成的图表。我发现安装它并让DOT_PATH空白在Windows上正常工作但在OS / X上必须直接指向点工具位置。

ACM Queue中有一篇很棒的Code Spelunking文章,其中详细介绍了如何使用doxygen和DTrace。

答案 4 :(得分:5)

KScope,基于cscope实用程序,如果您使用的是Linux(KDE)。 我曾经使用过(并且一直使用)最好的东西来删除一些不熟悉的代码,我必须以某种方式修改或者我将根据我的需要使用哪种API。 它的功能之一是交叉引用数据库,可以通过多种方式进行搜索:您可以找到符号的所有引用,其全局定义,查找函数的调用者/被调用者等等。 它甚至还有一个内置的IDE,并且能够显示调用图。

答案 5 :(得分:4)

如果您使用graphviz,

Doxygen将为您提供类关系图,即使您没有专门为此做好准备。

答案 6 :(得分:3)

有一些像埃及http://www.gson.org/egypt/egypt.html这样的工具可以工作,但前提是你匹配用于编译代码的预期GCC版本和调用图生成器的确切版本。关于codeviz http://www.csn.ul.ie/~mel/projects/codeviz/

,也可以这样说

其他选项是在cachegrind模式中使用的valgrind(它生成一种可以从kcachegrind程序中获取的调用图。

答案 7 :(得分:1)

我个人使用Visual Studio调试工具。

它带有“来电图”功能,可让您在小方框中显示内容。呼叫堆栈和通常的手表功能通常都是我需要的

答案 8 :(得分:1)

还有AspectBrowser在Eclipse 3.4.0

中效果不佳

答案 9 :(得分:1)

尝试AQtime,它是一个分析工具,显示被调用的所有函数(以及花费的时间),您可以设置分析的起点和终点。他们有30天的试用期。

答案 10 :(得分:1)

我曾经使用过Borland Together,它在从代码生成模型方面做得不错。我相信它甚至可以从代码生成序列图。请记住,如果您的代码混乱,您的模型也会如此。而且我记得它并不便宜,但有时你可以抓住一个特别的。

答案 11 :(得分:1)

Rational Quantify也提供了一个很好的调用图。

答案 12 :(得分:1)

我尝试了一个名为Visustin的工具,这个工具图形化程度不是很高,但是它说的是:代码中的流程图。 http://www.aivosto.com/visustin.html

答案 13 :(得分:0)

doxygen是一个免费的文档生成工具(类似于Javadoc),它也会生成关系图。

答案 14 :(得分:0)

Doxygen,关于它的好处是它会告诉你丑陋/好的是你的代码在类的循环依赖方面。所以你将被迫重新考虑你的代码,尽管你可能不喜欢它: - )

答案 15 :(得分:0)

Slickedit非常适合浏览您不知道的大块代码。标签功能允许您在功能基础上处理代码,而无需处理它所在的文件。(EMACS实际上有标签,并且与Slickedit一样好,但学习曲线稍微陡峭)

当你到达一个你不理解的方法或类或变量时,你只需按标签转到该代码,查看它,然后弹出标记回来。 (这些都是按键操作,因此非常快)

您还可以使用find-references查看该函数/变量的使用位置。

节省大量时间,不得不去找出哪些文件。