C / C ++源代码可视化?
基本上,我想要生成源代码可视化的工具,例如:
- 函数调用图
- 依赖图
- ...
解决方案
回答
尝试doxygen
Xerces的示例输出
回答
可能是重复的,但请查看ollydbg,IDA Pro,并且此网站上有一堆资源,其中包含一些非常性感的图像。
回答
尽管我们需要安装GraphViz才能绘制图形,但Doxygen确实非常适合此操作。
安装完所有内容后,绘制图形就非常简单。确保将EXTRACT_ALL和CALL_GRAPH设置为true,并且一切顺利。
有关Doxygen的此功能的完整文档在这里。
回答
我们可以查看用于软件设计和建模的不同工具(Rational Rose,Sparx Enterprise Architect,Umbrello等)。它们中的大多数都具有一些功能,可以按源代码进行逆向建模,并获得UML类图,有时甚至还有序列图(这与函数调用图非常接近)。
但是,当我们在非常大的项目代码库中获得了一些图片之后,我们可能会意识到,这样的图形相当难以阅读和理解。不幸的是,复杂性的可视化功能非常有限。
对于我来说,使用"分而治之"的习惯用法是更方便的方法。我们可以从某些代码库中提取不同的功能块或者层(有时只需按不同的文件夹对cpp文件进行排序即可)。另一种方法是使用某些脚本(bash,python)创建具有相关文件,类或者函数(例如"依赖项数量"等)的感兴趣参数的简单csv表。
回答
我强烈推荐BOUML。这是一个免费的UML建模应用程序,该应用程序:
- 速度非常快(有史以来最快的UML工具,请查看基准测试),
- 具有坚如磐石的C ++导入支持,
- 具有出色的SVG导出支持,这一点很重要,因为以矢量格式查看大型图形时,可以快速缩放,例如Firefox非常方便(我们可以在"鸟瞰"视图和类详细信息视图之间快速切换),
- 功能齐全,开发能力令人印象深刻(看看开发历史,很难相信如此快速的进步是有可能的)。
因此:将代码导入BOUML并在其中查看,或者导出为SVG并在Firefox中查看。
对于免费版本:
- 来源在Github上为DoUML
- 可以从http://www.bouml.fr/download.html下载安装程序
回答
有一个称为CDOC的旧工具,我们仍然使用它来生成调用树。
回答
如果使用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下载
回答
除了上面的书面工具之外,我们还可以尝试了解。但是,它不是免费的。