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