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

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

C/C++ source code visualization?

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

  • 函数调用图
  • 依赖图
  • ...

尽管您需要安装GraphViz才能绘制图形,但Doxygen确实非常适合此操作。

安装完所有内容后,绘制图形就非常简单。确保将EXTRACT_ALL和CALL_GRAPH设置为true,并且一切顺利。

有关该功能的完整文档在这里。


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

  • 速度非常快(有史以来最快的UML工具,请查看基准测试),
  • 具有坚如磐石的C ++导入支持,
  • 具有出色的SVG导出支持,这一点很重要,因为以矢量格式查看大型图形(例如,可以快速缩放)。 Firefox非常方便(您可以在"鸟瞰"视图和类详细信息视图之间快速切换),
  • 具有功能齐全,开发能力强的特点(纵观开发历史,很难相信会有如此快速的进步)。

因此:将代码导入BOUML并在其中查看,或导出为SVG并在Firefox中查看。

对于免费版本:

  • 来源在Github上为DoUML
  • 可以从http://www.bouml.fr/download.html下载安装程序


您可以查看用于软件设计和建模的不同工具(Rational Rose,Sparx Enterprise Architect,Umbrello等)。它们中的大多数具有一些功能,可以按源代码进行逆向建模,并获得UML类图,有时甚至还有序列图(这与函数调用图非常接近)。

但是,当您在非常大的项目代码库中获得了一些图片之后,您可能会意识到,此类图形非常难以阅读和理解。不幸的是,复杂性的可视化功能非常有限。

对我而言,使用"分而治之"的习惯用法是更方便的方法。您可以从某些代码库中提取不同的功能块或层(有时只需按不同的文件夹对cpp文件进行排序即可)。另一种方法是使用某些脚本(bash,python)创建具有相关文件,类或函数(例如"依赖项数量"等)的感兴趣参数的简单csv表。


尝试doxygen

Xerces的示例输出


除了上面的书面工具,您还可以尝试了解。但是,它不是免费的。


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

该团队在将来的发行版中对支持C ++产生了浓厚的兴趣,因此您可能需要随时关注。同时,您可以在VS 2010体系结构发现和建模工具论坛中发布http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads以请求更新。我知道产品团队喜欢听到客户对工具的反馈。

同时,您可以在以下主题中学习更多有关通过.NET代码创建序列图和依赖图的信息:

如何:使用体系结构资源管理器查找代码:http://msdn.microsoft.com/zh-cn/library/dd409431%28VS.100%29.aspx

如何:从代码生成图形文档:http://msdn.microsoft.com/zh-cn/library/dd409453%28VS.100%29.aspx#SeeSpecificSource

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

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


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


可能是重复的,但请查看ollydbg,IDA Pro,此网站上有一堆资源,其中包含一些非常性感的图像。


推荐阅读