基本上我想要生成源代码可视化的工具,例如:
- 函数调用图
- 依赖图
- ...
Doxygen在这方面确实非常出色,尽管您需要安装GraphViz才能获得要绘制的图形。
一旦你安装了所有东西,绘制图表真的很简单。确保将EXTRACT_ALL和CALL_GRAPH设置为 true,您应该一切顺利。
doxygen 这个函数的完整文档在这里。
我强烈推荐BOUML。这是一个免费的 UML 建模应用程序,它:
所以:将您的代码导入 BOUML 并在那里查看,或导出到 SVG 并在 Firefox 中查看。
免费版:
您可以查看用于软件设计和建模的不同工具(Rational Rose、Sparx Enterprise Architect、Umbrello等)。他们中的大多数都有一些功能,可以通过源代码进行反向建模,并获得 UML 类图,有时甚至是序列图(这非常接近函数调用图)。
但是当你在非常大的项目代码库上获得一些图片后,你会意识到这样的图表很难阅读和理解。不幸的是,复杂性的可视化能力非常有限。
至于我,使用“分而治之”的成语是更方便的方法。您可以从您的一些代码库中提取不同的功能块或层(有时只需按不同文件夹对 cpp 文件进行排序就足够了)。另一种方法是使用一些脚本(bash、python)创建简单的 csv 表,其中包含感兴趣的文件、类或函数参数,如“依赖项数”等)。
如果您使用 Visual Studio,2010 Ultimate 版本允许您生成序列图和依赖关系图。但是,该版本目前仅支持 .NET 应用程序项目。
该团队对在未来版本中支持 C++ 产生了浓厚的兴趣,因此您可能需要继续关注。同时,您可以在http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads的VS 2010 架构发现和建模工具论坛上发帖请求更新。我知道产品团队喜欢听取客户对工具的反馈。
同时,您可以在以下主题中了解有关从 .NET 代码创建序列图和依赖关系图的更多信息:
如何:使用架构资源管理器查找代码:http : //msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx
如何:从代码生成图形文档: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 和这个网站有一大堆资源和一些非常性感的图像。