麻省理工学院(MIT)的科学家们已开发出了一款名为CodeCarbonCopy(CCC)的新工具,这款工具可自动将代码从一个项目移植到另一个项目,对应标注差异之处,让移植过去的代码适用于新的代码库。
这款工具还没有公开发布,因为研究人员仍在竭力改进和完善,但他们在内测环境下已测试成功。
据研究团队声称,他们使用CodeCarbonCopy,在六款流行的开源图像处理程序之间移植了代码。该团队进行了8次试验,其中7次成功,接受端程序成功地执行了移植过去的代码,没有错误。
CodeCarbonCopy的结果
CodeCarbonCopy对应标注不同项目之间的代码
CodeCarbonCopy之所以能够做到这点,是由于其两项固有功能。第一项功能是,代码从一个代码库移植到另一个代码库时,它能够检测并对应标注变量。
使用CodeCarbonCopy意味着从获取和导入代码片段的两个地方并行运行程序。
CodeCarbonCopy可识别完成同一角色的变量,并为操作人员将它们列出来。它还显示了无法匹配的变量,那样程序员可以手动关联变量或者将变量从移植过去的代码去除。
CodeCarbonCopy只是最适用于某个类别的应用程序。
此外,除了基本的变量移植外,CodeCarbonCopy还能考虑两个程序在内部是如何表示数据的,相应调整移植过去的代码。这参照了每个代码库是如何处理数据的(比如在两种不同的颜色格式RGB和BGR之间进行调整)、以什么顺序处理的。
正因为如此,CodeCarbonCopy目前仅适用于在处理的数据采用固定格式的应用程序之间移植代码,比如图像、视频、音频、PDF及其他格式。研究团队正在继续改进CodeCarbonCopy,以便它可以处理更麻烦、更杂乱的格式。
CodeCarbonCopy项目的成员之一斯特利奥斯•西德罗格洛-道斯科斯(Stelios Sidiroglou-Douskos)说:“CodeCarbonCopy能够实现软件工程界梦寐以求的目标之一:自动重用代码。”
这不是MIT第一次试图革编程界的命。2016年1月,MIT携同Adobe公司宣布了Project Helium(http://projects.csail.mit.edu/helium/),这个项目旨在帮助广大开发人员更新较旧的软件代码库,以便在现代硬件上运行,竭力消除软件腐烂(software rot)现象,这个现象又叫比特腐烂(bit-rot)。
两个月后,MIT宣布了一种新的算法:Polaris,该算法将在线网站的页面加载时间最多可以缩短34%。
CodeCarbonCopy是MIT的计算机科学和人工智能实验室(CSAIL)的杰作。科学家们在今年9月初于德国召开的ESEC/FSE 2017大会上介绍了这一成果(https://people.csail.mit.edu/rinard/paper/fse17.codecarboncopy.pdf)。