C++有哪些好的代码可视化/重构工具?

7
最近在工作中遇到了很多相当庞大、复杂的代码库,要求我对其进行审查或重构或两者兼而有之。当代码高度并发,使用模板(特别是静态多态性)并且具有依赖于回调/信号/条件变量等逻辑时,这可能非常耗时。
有没有好的C++可视化工具呢?那些工具中是否有任何一个实际上与“高级”C++功能结合得很好?任何东西都可能比我现在的方法更好,基本上是用笔加纸或通过调试器逐步执行。调试器方法可以跟踪特定的代码路径,但在进行严肃的重构时,不利于看到您真正需要的整体情况。
编辑:我应该提到Visual Studio插件对我来说不会有太多帮助,因为我们的东西大多数只适用于Linux。
7个回答

4
您可以使用Doxygen来入门;一旦完成了简单的部分(类布局、层次结构等),您需要编写有关无法轻松处理像Doxygen这样的工具的其余软件的内容。
祝您好运。
M.

2

可视化:

我不了解UML以外的情况,但目前在UML中提供的功能对于现代基于模板的C++反向工程并不完善。最多只能获得简单的类图。

重构:

Mozilla创建了dehydra / Pork 工具来分析和重构其C++源代码,以更好地使用惯用语法替换旧式的XPCOM和内存管理。它没有与可视化工具绑定,而是使用模式匹配和JavaScript。我自己没有尝试过,因为我很幸运没有处于需要使用此工具的位置。


1

不行、不行、还是不行。您需要手动记录和绘制代码库的图表;这应该已经至少部分完成。

有一个重构工具,至少声称是,适用于xemacs。有一个适用于VS的,但效果不太好,只知道5-10个重构。xemacs的价格大约为250美元左右。不知道Eclipse是否有一个。您很可能需要手动进行重构。


支持代码生成 +1。你不需要一个自动工具来操纵代码并添加 // 自动生成:请勿修改 的注释。 - wilhelmtell

1

我不知道是否有针对C++的重构工具,甚至与Java的重构工具相媲美。Eclipse/CTD有一些小的重构(提取方法、公共/私有/获取器+设置器),但仅此而已。

尽管如此,Eclipse/CDT是一个很好的工具,可以获得大型代码库的概述。代码导航功能(显示引用、显示定义、显示声明、类层次结构等)是我在C/C++编辑器中见过的最好的。


1

这大概是目前我能找到的最有用的了。真正好的是,一个工具可以生成尽可能最佳的可视化效果,但同时也提供给你填补缺失的能力。然而,可惜的是目前貌似还没有这样的工具。 - Paul D.
无法在任何地方看到此内容,最后一条评论是在2010年:“插件仍在游乐场中”。 - Zitrax

0

我不能保证它的可靠性,但有CDT重构项目
编辑:那个页面看起来已经过时了。也许其他人可以证明CDT重构的状态?


0

DMS软件重构工具包是一个由语言定义参数化的程序转换引擎。它具有完整的C++前端,并已用于执行对使用C++编码的软件系统的大规模重构。

请参见Akers,R,Baxter,I.,Mehlich,M.,Ellis,B.,Luecke,K.,案例研究:通过自动程序转换重新设计C++组件模型,Information & Software Technology 49(3):275-291 2007,以了解DMS及其如何应用于C++模块以支持航空电子软件的讨论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接