自动化的Repairnator程序员制作的补丁足以误导人们
本杰明·富兰克林(Benjamin Franklin)在1789年写道:“除了死亡和税收的必然性之外,在这个世界上没有什么可以说的明确的东西。”如果他今天生活,他仍然可以在计划清单中增加一些错误。
现代计算机程序是如此复杂,以至于在开发过程中不可避免地会出现错误。 因此,修复它们的搜索和编写补丁程序是任何软件开发计划的正常组成部分。 甚至有公司为开发人员提供这种服务-例如Travis。
但是查找错误和编写补丁程序是一项漫长的工作,占用了大量资源。 各种各样的研究人员已经开发了使该过程自动化的机器人,但是它们通常工作缓慢或产生质量不合格的代码,并且无法通过检查。 因此,开发人员真的很希望依靠一个快速,高质量的机器人来扫描错误并为其编写补丁。

今天,由于马丁·蒙佩拉斯
( Martin Monperas)和他来自瑞典斯德哥尔摩皇家技术学院的朋友的
努力 ,他们的梦想实现了。 他们最终创造了一个机器人,可以与人竞争,查找错误并编写高质量的补丁程序。
这些家伙命名为Repairnator bot并成功对其进行了测试,从而使他们可以与人类程序员竞争以寻找修复程序。 他们说:“这是在自动程序校正研究中与人竞争的重要里程碑。”
长期以来,计算机科学家一直意识到自动执行补丁程序的可能性。 尚不清楚机器人是否能够像人类一样快速有效地完成这项工作。
因此,Monperas和该公司决定通过伪装成人类开发人员并允许其与人们竞争GitHub的补丁开发来测试他们的bot,GitHub是一个使用版本控制进行编程的网站。 他们说:“ Repairnator的关键思想是自动创建补丁,以修复程序集中的错误,向开发人员展示这些错误,并查看开发人员是否会接受这些补丁作为代码中值得包含的内容,”
该团队在其GitHub实验室中将Luc Esape注册为程序员。 他们说:“ Luke拥有个人资料图片,他看起来像是初级开发人员,渴望为GitHub上的开源开发做出贡献。”
实际上,卢克(Luke)是一名卧底修理工。 需要欺骗,因为主持人倾向于以不同的方式评估机器人和人员的工作。 “对测试人们的竞争能力的科学假设来说,保密是必要的,” Monperas在公司表示,他已经将所有关注的情况告知了所有人。
团队采取了两种方法来检查Repairnator。 第一次测试是从2017年2月到2017年12月,当时她在GitHub的14188个永久列表中启动了Repairnator,以查找错误。 他们说:“我们发现我们的原型每天能够进行30次更正尝试。”
在此期间,Repairnator分析了超过11,500个有错误的项目。 他能够在3000多个案例中重现错误。 在15个案例中,他能够开发出补丁。
但是这些修补程序都没有被接受到装配体中,因为Repairnator要么使它们过长,要么编写了质量不合格的修补程序。
第二种方法更成功。 团队从2018年1月至2018年6月派遣Luke从事Travis持续集成服务的工作。尽管团队没有具体说明他们在Repairnator中所做的确切更改,但1月12日,他编写了大会主持人接受的第一个补丁。 他们说:“换句话说,Repairnator首先能够达到人的水平。” 在接下来的六个月中,Repairnator发布了五个补丁,这些补丁已被主持人接受。
令人印象深刻的成就为新一代软件开发方法铺平了道路。 它还提出了有趣的问题。 开发人员正在关注Repairnator在5月12日为eclipse / ditto项目开发的补丁。
之后,该团队收到了该项目一位开发人员的来信:“我们接受已签署Eclipse Foundation Contributor许可协议的用户的合并请求。”
这造成了一个令人不快的问题,因为该僵尸程序无法签署许可协议。 “谁拥有知识产权,谁负责机器人的贡献:机器人操作员,机器人的作者,修复算法的设计者?” -开发人员团队提出了一个问题。
在人们和机器人可以进一步合作之前,应该解决这类问题。 但是,Monperas和他的团队对未来感到乐观。 他们说:“我们认为Repairnator是未来软件开发的原型,机器人和人们可以无缝协作,成为寻找软件缺陷的合作伙伴。”
富兰克林本身就是著名的发明家,一定会对发生的事情印象深刻。