这个名为Repairnator的自动 程序员 编写的补丁好得足以骗过真正的人类工程师。
1789年本杰明•富兰克林写道:“在这个世界上,除了死亡和税收外,没有什么可以说是确定无疑的。”但如果富兰克林生活在现代,他可能会另外添加“软件bug”这一项。
现代计算机程序非常复杂,开发过程中难免会出现各种各样的bug(缺陷)。这就是为什么找到缺陷并编写修复它们的补丁是任何软件开发计划的一项常规工作。确实,像Travis这样的公司在向广大开发人员提供这项服务。
但是,查找和修复补丁是一件很费时的差事,耗用大量资源。众多研究人员开发出了使这个过程自动化的机器人,但是它们往往不是速度慢,就是编写的代码差强人意,过不了关。因此,开发人员非常希望能够依赖一种速度快、质量高的机器人来查找代码中的错误,然后编写补丁来修复错误。
今天开发人员终于梦想成真了,这归功于瑞典斯德哥尔摩KTH皇家理工学院的马丁•蒙佩卢斯(Martin Monperrus)及其同仁所做的工作。这些研究人员最终开发出了一款机器人,它在寻找缺陷并编写高质量的补丁方面与人类开发人员相比毫不逊色。
这些人称这款机器人为Repairnator,已成功地进行了测试,让它可与人类开发人员一较高下、找到修复程序。他们说:“这是程序自动修复方面的软件工程研究界取得的重大里程碑,做到了能够与人类相竞争。”
计算机科学家们早就知道,可以使编写补丁的过程实现自动化。但目前尚不清楚机器人能不能与人类一样快速地完成这项工作,并获得相同的质量。
因此蒙佩卢斯和同仁对此进行了测试,他们将Repairnator伪装成人类开发人员,让它可以与人类一较高下,开发放在GitHub(面向软件开发人员的版本控制网站)上的补丁。蒙佩卢斯和同仁说:“Repairnator的关键设计想法是,自动生成修复构建错误的补丁,然后将补丁拿给人类开发人员过目,最终看看那些人类开发人员会不会接受这些补丁,视作代码库的有效贡献。”
该团队创建了一个名为Luc Esape的GitHub用户,他似乎是他们研究实验室的一名软件工程师。他们说:“Luc有一张个人资料照片,看起来像是一名初级开发人员,渴望在GitHub上贡献开源代码。”
链接:https://github.com/lucesape
但Luc实际上是伪装的Repairnator。这种欺骗很有必要,因为人类版主往往以不同的视角或标准来评估机器人的工作和人类的工作。蒙佩卢斯和同仁说:“为了测试与人类相竞争的科学假设,这种伪装必不可少。”他们现在已向相关人员告知了真相。
该团队进行了两次测试Repairnator。第一趟测试是在2017年2月至12月,当时团队针对14188个GitHub项目的固定列表运行了Repairnator,以寻找错误。他们说:“我们发现,我们的原型每天能够执行大约30次修复。”
在此期间,Repairnator分析了11500多个有缺陷的构建项目。其中,它能够重现3000多个项目中的缺陷。然后它又针对15个项目开发了补丁。
然而,这些补丁没有一个得到接受、成为构建项目的一部分,因为Repairnator花了太长的时间来开发,或者编写了无法接受的低质量补丁。
第二次实验的结果比较成功。这一回,该团队让Luc在2018年1月至6月期间在Travis持续集成服务上运行。虽然团队没有具体表明他们对Repairnator做了哪些改进,但是在1月12日,该机器人编写了得到人类版主接受、成为构建项目一部分的补丁。“换句话说,Repairnator第一次可以与人类相竞争。”
在接下来的六个月里,Repairnator继续编写了人类版主接受的五个补丁。
这项出色的工作为新一代软件开发奠定了基础。它还提出了一些值得关注的问题。
蒙佩卢斯和同仁提到了Repairnator在5月12日为一个名为“eclipse/ditto”的GitHub项目开发的补丁。
然后,该团队收到了其中一位开发人员发来的下列消息:“我们只能接受来自签署了Eclipse基金会贡献者许可证协议的用户的合并请求(pull-request)。”
这引发了一个棘手的问题,因为机器人无法实际签署许可证协议。蒙佩卢斯和同仁问道: “谁拥有机器人贡献的代码的知识产权,并承担相应责任:是机器人操作者、机器人实施者还是修复算法设计师?”
在人类和机器人可以更深入细致地合作之前,必须解决这类问题。不过蒙佩卢斯和同仁颇为乐观。他们说:“我们认为,Repairnator预示着软件开发的美好未来,到时机器人和人类将在软件开发上顺畅协作,甚至通力合作。”
富兰克林这位以创造性闻名的发明家本人若在世的话,肯定也会大为惊叹。
论文《用Repairnator自动修复程序,编写出与人类不相上下的补丁》
链接:https://arxiv.org/pdf/1810.05806.pdf
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 智能化软件开发:程序员与 AI 机器人一起结对编程
- 培养更多女工程师/程序员 UBTECH推出可编程独角兽机器人
- 创建聊天机器人,第 3 部分: 使用认知(或人工智能)服务增强聊天机器人
- 协作机器人行业
- 开源机器人自学指南
- python图灵机器人
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。