0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器人开始在GitHub上修Bug了!

算法与数据结构 来源:YXQ 2019-06-05 14:39 次阅读

aaime/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!!”

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    210

    文章

    28141

    浏览量

    205995
  • GitHub
    +关注

    关注

    3

    文章

    466

    浏览量

    16366

原文标题:漫话:程序员要失业了??!机器人开始在GitHub上修Bug了。

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    “0元购”智元灵犀X1机器人,软硬件全套图纸和代码全公开!资料免费下载!

    提供核心组件的基础,智元机器人完整地开源软硬件全套图纸和代码,总资料大小超过1.2GB。整机结构硬件方面,提供整机结构图纸、整机硬件
    发表于 10-25 15:20

    机器人技术的发展趋势

    机器人技术的发展趋势呈现出多元化、智能化和广泛应用的特点。 一、智能化与自主化 人工智能(AI)与机器学习 : AI和机器学习机器人领域的
    的头像 发表于 10-25 09:27 404次阅读

    安全光栅工业机器人的应用

            随着现代工业生产的进步,工业机器人越来越受到制造业的关注,应用也越来越广泛。工业机器人安全生产也被广泛关注。那么出现一系列机器人在操作工程中对
    的头像 发表于 10-22 16:09 122次阅读
    安全光栅<b class='flag-5'>在</b>工业<b class='flag-5'>机器人</b><b class='flag-5'>上</b>的应用

    开源项目!用ESP32做一个可爱的无用机器人

    巧妙设计的杠杆将开关推回“关”位置。这种玩具很常见,许多人已经制作并上传到YouTube。 作者每年都会挑战自己制作一个技术产品,今年他决定制作这个复杂的项目——可爱无用机器人。这个机器人参考
    发表于 09-03 09:34

    开源项目!用ESP32做一个可爱的无用机器人

    巧妙设计的杠杆将开关推回“关”位置。这种玩具很常见,许多人已经制作并上传到YouTube。 作者每年都会挑战自己制作一个技术产品,今年他决定制作这个复杂的项目——可爱无用机器人。这个机器人参考
    发表于 08-30 14:50

    思岚科技S2L激光雷达ROSLander机器人的作用

    前段时间,中国机器人及人工智能大赛公布“复合机器人月球探索”赛项的官方推荐设备——奇迈品牌的机器人ROSLander。
    的头像 发表于 08-13 10:01 716次阅读
    思岚科技S2L激光雷达<b class='flag-5'>在</b>ROSLander<b class='flag-5'>机器人</b><b class='flag-5'>上</b>的作用

    Al大模型机器人

    )大模型AI机器人采用中英文双语应用,目前的知识图谱包括金航标和萨科微所有的产品内容、应用场景、产品的家属参数等,热卖的型号S8050、TL431、SS8550、FR107、LM321、ZMM5V6
    发表于 07-05 08:52

    基于FPGA EtherCAT的六自由度机器人视觉伺服控制设计

    PS层运行 苏姆的裸机程序, 并将六自由度串联机器人逆解算法移植到主站代码里,进行机器人末端位置对于视觉反馈的实时跟随控制。 (4)通过实验验证本设计的对物块识别的准确性和实
    发表于 05-29 16:17

    DIY推荐!自制一个基于ESP32的沙画机器人

    到底板的地方。整个机器人是使用Fusion 360从零开始设计的,并且我通过Fusion Team在线共享它们。 我从草图开始设计外壳的大致形状,然后沿着大悬挑部分分割它,确保可打印
    发表于 04-15 15:09

    红外热成像设备机器人领域的应用

    红外热成像设备是一种机器人技术中广泛应用的先进技术。通过利用红外辐射来检测和测量物体的热分布,红外热成像设备为机器人提供关键的环境感知和目标识别能力。本文将详细介绍红外热成像设备
    的头像 发表于 01-11 17:46 795次阅读
    红外热成像设备<b class='flag-5'>在</b><b class='flag-5'>机器人</b>领域的应用

    大语言模型机器人的应用及面临的挑战

    电子发烧友网报道(文/李弯弯)现在的机器人已经具备相当高的智能化水平,这主要得益于人工智能技术的快速发展。这些机器人不仅可以执行重复性的任务,还可以处理复杂的操作,甚至具备学习和适应环境变化的能力
    的头像 发表于 01-09 00:05 1671次阅读

    【开源项目】Emo:基于树莓派 4B DIY 能笑会动的桌面机器人

    ,下面请跟着我的步伐开始组装吧! 注:3D 图纸及代码文末下载。 组装底座 首先,我们将 Micro USB 模块安装在底座,这将作为机器人的供电接口。 我们将 SW-420 震动传感器放在靠近
    发表于 12-26 15:18

    LabVIEW的六轴工业机器人运动控制系统

    。 系统研究与算法开发:首先,项目围绕机器人的数学模型,特别是空间位姿描述和D-H模型展开研究。在此基础,开发了机器人的运动学正反解算法,使用了雅克比-迭代法等先进技术。此外,还涉及
    发表于 12-21 20:03

    用全志R128复刻自平衡赛车机器人,还实现三种不同的操控方式

    手柄的菜单栏UI可以选择不同的机器人基础参数设置和进行机器人操控。 自平衡机器人启动后,可以通过面包板
    发表于 12-20 10:22

    单片机和FreeRTOS机器人ROS

    机器人的应用越来越广泛,大家熟知的稚晖君直接创业搞机器人,可想而至,接下来的十年,机器人绝对是热门的行业。
    的头像 发表于 11-28 09:31 1124次阅读
    单片机和FreeRTOS<b class='flag-5'>上</b>跑<b class='flag-5'>机器人</b>ROS