C/C++源代码可视化? [关闭]

Posted

技术标签:

【中文标题】C/C++源代码可视化? [关闭]【英文标题】:C/C++ source code visualization? [closed] 【发布时间】:2010-09-06 20:54:39 【问题描述】:

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

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

【问题讨论】:

您是指接口中的依赖关系(例如继承图)还是实现中的依赖关系(调用图,例如,如果 A 在其主体中调用 B,则从函数 A 到 B 有一条边)? 您可以尝试 CppDepend(cppdepend.com),您可以在其中生成函数调用图/依赖关系图并使用 CQLinq 过滤图中的元素。CppDepend 对开源贡献者是免费的。 看看cpp-dependencies,它是一个新工具,可以使用dot (Graphviz) 语言生成代码库的可视化。 【参考方案1】:

试试doxygen

Xerces 的示例输出

【讨论】:

【参考方案2】:

可能是重复的,但请查看 ollydbg、IDA Pro 和 this website 有一大堆资源和一些非常性感的图片。

【讨论】:

【参考方案3】:

Doxygen 非常适合此功能,尽管您需要安装 GraphViz 才能绘制图表。

安装完所有东西后,绘制图表就非常简单了。确保将 EXTRACT_ALL 和 CALL_GRAPH 设置为 true,然后一切顺利。

关于 doxygen 这个函数的完整文档是here。

【讨论】:

甜蜜。使用起来非常简单。 GraphViz 修改你的系统路径,doxygen 使用它。 +1 我同意。在探索现有代码时,Doxygen 是一个非常有用的工具。检查生成源代码的选项,您无需打开代码编辑器即可轻松浏览代码库... 一定要HAVE_DOT = YES【参考方案4】:

您可以查看用于软件设计和建模的不同工具(Rational RoseSparx Enterprise ArchitectUmbrello 等)。他们中的大多数都有一些功能,可以通过源代码进行反向建模,并获得 UML 类图,有时甚至是序列图(这非常接近函数调用图)。

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

对我来说,使用“分而治之”的成语是更方便的方法。您可以从某些代码库中提取不同的功能块或层(有时只需按不同文件夹对 cpp 文件进行排序就足够了)。另一种方法是使用一些脚本(bash、python)创建简单的 csv 表,其中包含文件、类或函数的感兴趣参数,例如“依赖项数”等)。

【讨论】:

【参考方案5】:

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

速度极快(有史以来最快的 UML 工具,请查看benchmarks), 拥有坚如磐石的 C++ 导入支持, 具有强大的 SVG 导出支持,这很重要,因为以矢量格式查看大图,在例如Firefox,非常方便(可以在“鸟瞰”视图和类详细视图之间快速切换), 功能齐全,令人印象深刻的密集开发(看看development history,很难相信有这么快的进步是可能的)。

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

免费版:

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

【讨论】:

4.23.7 的 Windows 安装程序可以在与 Douml 相同的 sourceforge 页面上的“文件”部分找到。 launchpad.net/~pasgui/+archive/ppa 这家伙正在为 douml debian/ubuntu 创建常规构建,正如 @Zeks 在其他线程中所建议的那样。【参考方案6】:

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

团队对在未来版本中支持 C++ 产生了浓厚的兴趣,因此您可能需要继续关注。同时,您可以在 VS 2010 Architectural Discovery & Modeling Tools 论坛http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads 上发帖请求更新。我知道产品团队喜欢听取客户对工具的反馈。

同时,您可以在以下主题中了解有关从 .NET 代码创建序列图和依赖关系图的更多信息:

如何:使用 Architecture Explorer 查找代码: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 下载它

【讨论】:

【参考方案7】:

除了上面写的工具,你可以试试understand。但是,它不是免费的。

【讨论】:

他们有一个非常方便的试用版。

以上是关于C/C++源代码可视化? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用于 C/C++/C# 的免费静态代码扫描器 [关闭]

将 c/c++ 宏转换为 c# 中的等效代码 [关闭]

关闭vscode的C/C++代码错误提示

满足条件时是不是可以在 GLSL 着色器中回调 C/C++ 函数/代码? [关闭]

如何可视化 C/C++ #define 指令?

在 C/C++ 中查找可用的网络接口? [关闭]