可视化代码流的工具(C / C ++)
我们是否有任何工具可以简化了解C / C ++代码的任务?我们只是继承了其他人编写的大量软件,因此我们需要快速入门。关于可以简化此任务的工具的任何建议?
解决方案
我个人使用调试器。遍历代码,看看它在做什么,以及去哪里是唯一的方法。
但是,我们可以通过某些文档生成器(有时会提供帮助)来运行它。氧气就是一个很好的例子。
如果我们使用graphviz,即使没有特别准备,Doxygen也会为我们提供类关系图。
概要分析软件使我们可以了解已调用了哪些函数。
如果可以使用Linux,请尝试使用KCachegrind
Doxygen是一个免费的文档生成工具(类似于Javadoc),它也可以生成关系图。
我个人使用Visual Studio调试器工具。
它带有"呼叫者图"功能,使我们可以在小盒子中可视化内容。此外,呼叫堆栈和通常的监视功能通常是我所需要的
Doxygen的好处是,它会让我们知道丑陋/好是关于类的循环依赖关系的代码。因此,尽管我们可能不喜欢它,否则我们将不得不重构代码:-)
SourceInsight和Understand for C ++是获得c / c ++代码分析(包括流程图)的最佳工具。
还有一个AspectBrowser在Eclipse 3.4.0中不能很好地工作
试试AQtime,它是一个分析工具,它显示所有被调用的功能(及其花费的时间),我们可以设置分析的起点和终点。他们有30天的试用期。
有一些工具可以使用,例如埃及http://www.gson.org/egypt/egypt.html,但前提是我们与用于编译代码的预期GCC版本和调用图生成器的确切版本相匹配。关于codeviz也可以这样说http://www.csn.ul.ie/~mel/projects/codeviz/
另一个选项是在cachegrind模式下使用的valgrind(它会生成一种可从kcachegrind程序中遵循的调用图类型。
我前一段时间使用Borland Together,它在根据代码生成模型方面做得不错。我相信它甚至可以从代码生成序列图。请记住,如果代码混乱不堪,那么模型也将如此。而且我记得它并不便宜,但有时我们可以享受特别优惠。
Rational Quantify还提供了一个不错的调用图。
如果我们使用的是Linux(KDE),则基于cscope实用程序构建的KScope。
我曾经(并且一直在使用)最好的东西是钻研一些陌生的巨大代码,我必须以某种方式对其进行修改,或者根据自己的需要使用哪种API。
它的功能之一是交叉引用数据库,可以通过多种方式对其进行搜索:我们可以找到符号的所有引用,符号的全局定义,查找函数的调用者/被调用者等等。
它甚至具有内置的IDE和显示调用图的功能。
如果我们打开EXTRACT_ALL选项,则Doxygen非常擅长从代码生成图而无需应用标记。我们需要安装GraphViz才能使用HAVE_DOT设置生成图表。我发现已安装它,并且在Windows上将DOT_PATH留为空白可以正常工作,但在OS / X上,必须直接指向点工具位置。
ACM Queue中有一篇非常出色的Code Spelunking文章,其中讨论了有关使用Doxygen和DTrace的更多信息。
Slickedit非常适合浏览我们不知道的大量代码。标签功能使我们可以在功能上处理代码,而不必处理文件所在的位置。(EMACS实际上具有标签,并且与Slickedit一样好,但学习曲线略微倾斜)
当我们访问不了解的方法,类或者变量时,只需按一下标签即可转到该代码,将其查找,然后弹出标签。 (那些绑定到击键,因此非常快)
我们还可以使用查找引用来查看在何处使用该函数/变量。
不必去找出文件在哪个文件中,从而节省大量时间。