C / C ++源代码可视化?

基本上我需要生成源代码可视化的工具,如:

  • 函数调用图
  • 依赖关系图

Doxygen对此非常优秀,尽pipe您需要安装GraphViz来获取graphics。

一旦你已经安装了所有东西,绘制graphics真的很简单。 确保你设置EXTRACT_ALL和CALL_GRAPH为真,你应该很好去。

Doxygen的这个function的完整文档在这里 ,它也有一个有用的例子 。

我强烈推荐BOUML 。 这是一个免费的UMLbuild模应用程序,它:

  • 是非常快的(最快的UML工具创造,检查基准 ),
  • 有坚如磐石的C ++导入支持,
  • 具有很好的SVG输出支持,这一点非常重要,因为查看vector格式的大图,比如在Firefox中可以快速扩展,非常方便(可以快速切换“鸟眼”视图和类详细视图),
  • 是function全面的,令人印象深刻的发展(看发展的历史 ,很难相信如此之快的进展是可能的)。

所以:将代码导入到BOUML中并在那里查看,或者导出到SVG并在Firefox中查看。

对于免费版本:

您可以查看不同的软件devise和build模工具( Rational RoseSparx Enterprise ArchitectUmbrello等)。 他们中的大多数人都有一些function来反转源代码build模,获得UML类图,有时甚至是序列图(这与函数调用图非常接近)。

但是当你在真正的大型项目代码库上获得一些图片后,你会发现这样的图表很难阅读和理解。 不幸的是,复杂性的可视化function非常有限。

至于我,使用“分而治之”的习惯用法是比较方便的。 你可以从你的一些代码库中提取不同的function块或图层(有时足够的只是通过不同的文件夹对cpp文件进行sorting)。 另一种方法是使用一些脚本(bash,python)来创build简单的csv表,其中包含文件,类或函数的相关参数,比如“依赖数目”等)。

尝试doxygen

来自Xerces的示例输出

如果您使用Visual Studio,则可以使用2010 Ultimate版本生成序列图和依赖关系图。 但是,该版本目前仅支持.NET应用程序项目。

在未来的版本中,团队对C ++的支持很感兴趣,所以你可能需要关注。 同时,您可以在http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads上的;VS 2010架构发现和build模工具论坛中发布请求更新。 我知道产品团队喜欢听到客户对这些工具的反馈。

同时,您可以在以下主题中了解更多关于从.NET代码创build顺序图和依赖关系图的知识:

如何使用体系结构浏览器查找代码 : http : //msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx

如何:从代码生成graphics文档 : http : //msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

如何:使用序列图探索代码 : http : //msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx

要试用RC版本并提供反馈,请在http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a下载;

可能是一个重复,但看看ollydbg,IDA Pro和这个网站有一些非常性感的图像的一大堆资源。

除了上面的书面工具,你可以尝试理解 。 但是,这不是免费的。

有一个名为CDOC的旧工具,我们仍然使用它来生成调用树。