分享好友 厨具导购网站首页 频道列表
机器人伪装成人类在github上为开源项目修复bug
2024-06-23 15:17    2698    中华厨具网

2018年1月12日下午12:28,geowebcache/geowebcache项目和往常一样在github 上提交代码。2分钟后 travis-ci 上的单元测试以失败告终,测试结果显示有2个测试用例报错了。没过多久,2018年1月12日下午1点35分,一名叫 lucesape 的开发者发布了一个修复补丁。2018年1月12日下午2:10,开发者接受了补丁,并将其合并到代码库,并评论到:“很奇怪,我以为我已经修好了......也许我在其他地方做过。谢谢你补丁!“

这是一个伟大的时刻,因为谁也不曾先到,修复这个 bug 的程序员 lucesape 是一个机器人。他叫 repairnator。

repairnator 是由 kth 瑞典皇家理工学院的软件技术教授 martin monperrus 开发。它会监控开源软件在持续集成期间发现的 bug,并尝试自动修复它们。如果它成功合成了一个有效的补丁,那么 repairnator 会伪装成人类身份向人类开发者提交此补丁。到目前为止,repairnator 已经成功生成了 5 个补丁,并被人类开发者永久地合并到代码库中。

这是自动程序修复软件工程研究中新的里程碑。

repairnator 使用补丁的形式修复代码中的 bug。例如,在以下补丁中,开发者修改了 if 语句的条件:

- if (x <10)+ if (x <= 10)foo();

程序修复机器人是一种试图合成源代码补丁的人工代理。他能够帮助人类分析和修复软件中的 bug。repairnator 机器人的工作原理:

为此,研发团队提出了一个概念:human-competitive(人类竞争力)。

程序修复机器人必须在人类修复 bug 之前找到高质量的修补程序。在这种情况下,如果补丁满足时效性和质量这两个条件,则可以认为补丁具有人类竞争力。及时性是指系统必须早于人类找到补丁。此外,与人类编写的补丁相比,机器人生成的补丁必须足够正确。

还有一个方面需要考虑。因为人类工程师并不会轻易接受机器人的贡献,即使它们是正确的。原因是人类往往对机器有偏见,如果贡献来自人类同伴,则更容忍错误。这意味着如果开发者知道修补程序来自机器人,那么开发者可能会更高地调整修补程序的质量。为了解决这个问题,团队为 repairnator伪造了一个人类身份。团队创建了一个名为 luc esape 的 github 用户。luc 有个头像,看起来像一个初级开发者,渴望在github上做开源贡献。现在,出于道德的考虑,luc 的真实身份已经在他的每个 pull request 中被披露。

据团队的 ppt 显示,这个名字来源于 esculape,阿斯克勒庇俄斯,希腊神话中的医神。而 luc 的头像也是阿斯克勒庇俄斯。他是太阳神阿波罗的儿子,他的雕塑和画像都是手持大蛇的形象。据说,有一天,阿斯克勒庇俄斯到山上游玩,一条蛇从草丛里窜过来想咬他,他急忙用一块石头将蛇打死了。一会儿,他发现另一条蛇游过来,将一株草放进死蛇的嘴里,死蛇竟然就活过来了,随即自如地消失在草丛里。阿斯克勒庇俄斯就这样偶然地找到了那种能起死回生的草。以后,有许多已经去世的人都被阿斯克勒庇俄斯妙手回春地拉回了人世。阿斯克勒庇俄斯死后,被宙斯升上天空变成了蛇夫座。

repairnator 机器人从2017年1月开始运营,分为三个不同阶段。

在2017年1月的一个月内,使用原型的初始版本进行了试验性实验。从 2017 年 2 月 1 日到 2017 年 12 月 31 日,repairnator 开始正式运行,其中包含 14,188 个项目。

从2018年1月1日到2018年6月30日,repairnator 实时监控 travis ci 构建流。repairnator 已经分析了 11,523 次失败的测试。对于 3,551 个(30.82%),repairnator 能够在本地重现这些失败的测试。在 3,551 次修复尝试中,repairnator 发现了 15 个可以使 ci 构建通过的补丁。然而,补丁分析显示,这些补丁中没有一个被采纳,因为它们要么太晚(repairnator 在人类开发者之后产生补丁)或者质量低(它们能够是项目构建成功也许是巧合)。

随后对 repairnator 进行了改进,终于使它可以成功工作了。repairnator 已经生成了 5 个符合上面定义的人类竞争力标准的补丁:1)补丁是在人类之前生成的,2)人类开发者接受补丁作为有效贡献,补丁在主代码库中合并。

时至今日,repairnator 已经修复了5个bug:

jan 12, 2018,?aaime/geowebcache/pull/1, “thanks for the patch!”

mar 23, 2018,?parkito/basicdatastructuresandalgorithms/pull/3?“merged commit 140a3e3 into parkito:develop”

april 5, 2018,?dkarv/jdcallgraph/pull/2?“thanks!”

may 3, 2018,?eclipse/ditto/pull/151?“cool, thanks for going through the eclipse process and for the fix.”

june 25, 2018,?donnelldebnam/codeu-spring-2018-29/pull/59?“thanks!!”

对此,你有什么看法?

转载:中国机器人网(原始来源:评论:0)

以上是网络信息转载,信息真实性自行斟酌。

版权/免责声明:
一、本文图片及内容来自网络,不代表本站的观点和立场,如涉及各类版权问题请联系及时删除。
二、凡注明稿件来源的内容均为转载稿或由企业用户注册发布,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性。
三、转载本站原创文章请注明来源:中华厨具网

免责声明:

本站所有页面所展现的企业/商品/服务内容、商标、费用、流程、详情等信息内容均由免费注册用户自行发布或由企业经营者自行提供,可能存在所发布的信息并未获得企业所有人授权、或信息不准确、不完整的情况;本网站仅为免费注册用户提供信息发布渠道,虽严格审核把关,但无法完全排除差错或疏漏,因此,本网站不对其发布信息的真实性、准确性和合法性负责。 本网站郑重声明:对网站展现内容(信息的真实性、准确性、合法性)不承担任何法律责任。

温馨提醒:中华厨具网提醒您部分企业可能不开放加盟/投资开店,请您在加盟/投资前直接与该企业核实、确认,并以企业最终确认的为准。对于您从本网站或本网站的任何有关服务所获得的资讯、内容或广告,以及您接受或信赖任何信息所产生之风险,本网站不承担任何责任,您应自行审核风险并谨防受骗。

中华厨具网对任何使用或提供本网站信息的商业活动及其风险不承担任何责任。

中华厨具网存在海量企业及店铺入驻,本网站虽严格审核把关,但无法完全排除差错或疏漏。如您发现页面有任何违法/侵权、错误信息或任何其他问题,请立即向中华厨具网举报并提供有效线索,我们将根据提供举报证据的材料及时处理或移除侵权或违法信息。