是否有一款可用的C++重构工具?

169

有没有人知道一个完整的C++重构工具,可以可靠地处理大型代码库(约10万行)?

在过去的几年里,我尝试了所有能找到的工具:SlickEdit、Eclipse CDT等等。但它们都无法使用。

总结: 我花时间评估了"Visual Assist X"和"Refactor for C++"。两者都有一些令人印象深刻的功能,但都远非完美。提取大块代码通常需要手动修改,因此效果不佳。

"Visual Assist X"具有很好的功能,例如更完整的自动完成等。但在某些点上会导致太多闪烁并明显变慢。

因此,我的意见是:"否,目前没有用于生产的C++重构工具"

更新于2015年3月 根据hdoghmens今天的回复,我尝试了Resharper for C++。 他的链接https://www.jetbrains.com/resharper/没有提到C++。但我发现了Resharper C++,它在一年多前在这里宣布:

https://www.jetbrains.com/resharper/features/cpp.html

我尝试使用20MB的代码库在VC2010上进行了尝试。

测试1:提取方法: 结果出现了Resharper异常。没有更改源代码。

测试2:使用不同的源代码进行方法提取: 运行正常。

测试3:更改提取函数的签名: 导致C++代码错误。

bool myclass::do_work123(<unknown long Color>int& Filled*&, long, int&)

也许这就是为什么C++没有出现在主页上的原因。
在我看来,对于这个问题的答案仍然是“不”。

12
已将此标记为“收藏”。C++的问题在于其非常复杂、上下文敏感的语法。如果没有解析完整的源代码,你无法确定标识符的含义。 - DevSolar
参见:https://dev59.com/60XRa4cB1Zd3GeqPtaW7,但它没有太多提供。 - dmckee --- ex-moderator kitten
4
Eclipse实际上运行得相当不错,你只需要通过编辑eclipse.ini文件来允许它使用更多内存。 - n0rd
3
如果您仍在监控C++的重构工具,请注意我们JetBrains目前正在开发支持C ++ ReSharper和单独跨平台C ++ IDE。 - Jura Gorohovsky
1
@RED SOFT ADAIR,你很有名哦。看看这个链接:https://youtu.be/RT46MpK39rQ?t=1611 - user6600549
让我们看看未来可能会带来什么 :-) - Xan-Kun Clark-Davis
19个回答

2

在商用代码重构套件中,必须提到Klocwork。当您观看演示视频时,它看起来非常有前途。


2

无疑,Resharper Ultimate 是可行的选择。保证让你快乐 :)

截至2015年3月,它是Beta版本。


我最终尝试了一下并更新了我的问题。无论如何还是谢谢你。 - RED SOFT ADAIR
这是针对 .NET 的……不是 C++。 - wcochran
2
https://www.jetbrains.com/resharper-cpp/ - wcochran

2

很抱歉我现在才看到这个问题。自2006年以来,我的学生和助手一直在进行C++重构工作。大部分CDT的重构基础设施是由我们在IFS软件研究所的团队建立的。几年来,我们提供了Cevelop,它是我们版本的CDT,支持C++代码现代化重构等功能。如果工作空间设置正确,Cevelop可以处理大型代码库。可免费下载使用:https://cevelop.com


1
非常有趣。我下載了它,但它無法啟動。請參閱 https://github.com/Cevelop/Issues/issues/84 - RED SOFT ADAIR

1
我建议您尝试使用Lattix。它可以分析大型C/C ++代码库,以发现架构,识别问题依赖项,并重新设计代码以改善模块化并减少技术债务。 Lattix还提供了许多算法来帮助重构过程。这些算法可帮助您确定如何将元素从层次结构的一部分移动到另一部分,打破循环并移动子系统,以改善子系统的耦合性和内聚性。以下是Lattix分析Android Kernel(160万行C/C++代码)的结果。 完整披露:我为Lattix工作。

1

是的,我看到了这个,但它只是一个初步尝试,仅涵盖“重命名”。没有提取函数等。但我期待更多的功能即将推出... - RED SOFT ADAIR

1

CLion 看起来非常有前途。

免责声明:由于需要将我的项目转换为CMake格式才能使用它,因此我尚未尝试过它。


1
如果您正在使用Visual C++(Express Edition是免费的),您可以使用www.wholetomato.com上的Visual Assist(链接到C++重构功能)。
它有30天的试用期,我们发现它比Visual C++产品本身内置的智能感知更快,更具特色。

2
我原本认为你不能在 Express 版本中使用插件。 - Yacoby
3
过去我确实尝试过在VS C++ Express中安装VA,但未成功。 - quamrana
你不能在隔离模式下安装Visual Studio插件(Express版本都在隔离模式下运行IDE)。如果你是学生,你可以从DreamSpark或MSDNAA下载完整版本的Visual Studio。 - Billy ONeal

1
如果你正在寻找重新构建代码库的方案,可以考虑使用MOOSE。不过需要注意的是,它是一个强大的分析和重构工具集,而非编辑器。

0
我在 Visual Studio 2013 中找到了以下插件: Microsoft 的 Visual C++ 重构
它只是一个简单的重命名工具,但它运行非常流畅。在右键单击符号后,它会添加以下上下文菜单:

enter image description here


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