我即将开始研究一个涉及重构和修改c&c ++中现有代码的项目。代码是一个膨胀的代码,并且数量巨大。当然,由于代码需要修改,因此我们必须在非常短的时间内开发对代码的理解,因为我们有一些非常紧迫的项目进度表。任何人都可以建议任何有助于实现上述目标的开源工具。总之,我正在寻找的工具可以:
请告诉我任何值得关注的经历,偏好或收藏。
[编辑]想出了上面提供帮助的工具列表。这是清单:
还有一个,感谢Steve Townsend Klocwork
代码是一个膨胀的代码,并且数量巨大。当然,由于需要修改代码,因此我们必须在非常短的时间内开发对代码的理解,因为我们有一些非常紧迫的项目进度表。
然后你就遇到了一个管理问题:如果你已经知道你几乎没有时间理解很多代码,那你就注定要失败了。要理解这段代码,你必须让它运行并通过它,这需要时间。工具只会给你一个大的地图,但不会向你展示真正的路径。
适合的工具,可以轻松自动重构代码。
你生活在仙境里。
有些工具可以为您提供应用程序的结构体系结构,但如果不逐个浏览每个模块并阅读代码,这将无济于事。首先是使用模块的代码,然后是模块内部的代码。
事实上它是C和C ++使得定义它将花费你的时间变得更加困难,因为它也与你对这些语言的知识以及编写应用程序的人的知识水平有关。
您应该问的第一个问题是“我如何确保我们所做的任何更改都不会破坏系统?”。但你的问题根本没有提到测试。那对我来说是个红旗。
我同意其他人的看法,工具不是解决方案(不太可能以你想要的形式出现,也不可能100%自信)。
您的目标应该是快速确定要更改的区域 - 我会通过检查和运行代码来执行此操作(最好是在现有测试中 - 您有吗?),并确保您拥有全面的单元和系统测试覆盖率在你触摸一条线之前。如果没有这个基础,你将会失明,最后期限会更加危险。
至少,如果你没有很好的测试,请将这个问题提前告知你的线路,这样如果事情变成梨形,你会发现问题已经提出。
你可以看看这样的东西 - 虽然没用过自己:Klokwork Architect
很少有工具可以解析和转换C和C ++代码。作为第一步,解析这些语言本身就很难。另一个关键问题是预处理器,它在C程序中非常滥用(例如,不是以结构化方式)并且使得解析器难以看到程序结构,因此分析器很难(需要决定何时重构)合法)正确地进行分析。
模数这些毛刺,我们的DMS Software Reengineering Toolkit可以配置为对C和C ++代码进行重构。 DMS具有用于C和C ++的工业强度解析器,并且可以捕获大多数预处理器用作内部代码结构的一部分(通常人们试图解析C / C ++会扩展预处理器指令,而这不是重构的选项)。
我们已经用它来对C ++代码进行大规模的代码重组(其中预处理程序滥用很少,因为C ++有许多其他配置代码的方法)。我们还对C系统进行了一些自动化重新设计,但需要更多的努力来处理滥用的预处理器用途。
它不是互动的。您必须规划重构转换并使用模式匹配语言指定它们。但它很可靠。
我只是想在学习/重构一个未知的代码库时,特别是当使用像Emacs / CTAGS/ECTAGS这样的工具时,我会添加一个注释,即CEDET非常有用。
5 agilej(http://www.agilej.com/)AgileJ StructureViews是Eclipse Java IDE的一个插件,它可以在工业规模上生成高度可定制的UML类图,非常适合敏捷开发或探索任何现有的Java代码库。
AgileJ适用于您的要点1(逆向工程以帮助理解设计)和3(用于研究现有代码库的良好代码浏览工具)。已迅速打包的膨胀代码通常显示如下:
有更多的特征可以添加到这个列表中,但上面的内容在类图上更明显。