社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

厉害了!AI成功伪装人类贡献GitHub修复补丁

AI前线 • 8 年前 • 445 次点击  

策划编辑 | Natalie
整理 | Vincent
编辑 | Natalie
AI 前线导读: 天啊!Bug 好多!地啊!头发好秃!妹啊!没空去撩!时间啊!哗啦啦流淌,难道你的一生就要被 Bug 缠住吗?难道就要当一辈子单身狗了吗?不!你的 Bug 将被 AI 拯救!

近日,据 MIT Technology Review 报道,一位名为“Repairnator”的机器人在 GitHub 上“卧底”数月,查找错误并编写和提交修复补丁,结果有多个补丁成功通过并被采纳,这位 Repairnator 到底是如何拯救程序员于水火的呢?

更多优质内容请关注微信公众号“AI 前线”(ID:ai-front)

现代计算机程序非常复杂,在开发过程中不可避免地会出现 Bug,找到它们并编写补丁来进行修复是大部分程序员的日常工作。

但是,查找和修复 Bug 是一项需要耗费大量资源和时间的任务。研究人员已经开发出了不少能让修复 Bug 过程自动化的机器人,但是它们往往效率很低,或者只能产生一些质量低下的代码,反而会拖慢工作的进度。因此,开发人员非常希望能够依靠快速、高质量的机器人来搜索错误代码,并编写补丁修复这些错误。

就在不久前,瑞典皇家理工学院的研究人员宣称:该学院的软件技术教授 Martin Monperrus 及其朋友构建的机器人 Repairnator 经过测试和实验,已经可以发现错误并编写高质量补丁。

神秘用户 Luc Esape

如果不是特别关注,你或许根本注意不到 GitHub 上这个名为 Luc Esape(GitHub:https://github.com/lucesape )的用户,表面上看起来,这位用户就像是一位渴望在 GitHub 上做贡献的初级开发者,但是实际上,它的背后是 Repairnator 程序自动修复机器人。

“是的,我是个人造程序员”

Repairnator 的任务是在 GitHub 上扫描并修复一些代码的 Bug,开发者团队共进行了两轮测试,第一轮是在 2017 年 2 月到 12 月,Repairnator 在 14188 个 GitHub 项目的修复列表上运行并扫描错误,期间 Repairnator 总共分析了超过 11500 个失败的构建,其中有 3000 多个能被重现。然后,Repairnator 生成了针对其中 15 个问题的补丁,遗憾的是由于补丁质量低、花费时间过长等问题,这些补丁均未被接受。

第二轮测试是在 2018 年 1 月至 6 月,该团队没有具体说明他们对 Repairnator 做了哪些改进,但 Repairnator 在 1 月 12 日成功编写出了第一个被人类开发者接受的补丁。在之后的 6 个月里,Repairnator 陆续又有 5 个补丁被采纳。

GitHub 上采纳了 Repairnator 修复建议的人类用户评论

至此,神秘用户 Luc Esape,或者说 AI 程序 Repairnator 成功发现并修改出了可被人类开发者接受的 Bug,那么问题来了:它到底是怎么做到的呢?

Repairnator 是如何工作的?

Repairnator 专门用于修复持续构建过程中出现的 Bug。它会持续监控被 Push 到 GitHub 上的数千次代码提交,并分析相应的构建过程。每一分钟,它都会启动新的修复尝试,以便在人类程序员之前修复 Bug。Repairnator 被设计为要尽可能快地提交修复,因为如果它能够比人类程序员更快找到并提交修复方案,那么我们就可以认为它可以与人类程序员相媲美。

下面通过一张流程图来看看 Repairnator 的工作流程:

Repairnator 的测试流程

Repairnator 的输入主要来自持续集成构建,当开发人员在 GitHub 项目提交代码的时候(a)就会触发(图中的上半部分(a)和(b))。 Repairnator 的输出包括两部分:(1)如果检测到持续构建的 Bug,则自动生成修复补丁(g);(2)收集有价值的数据用于未来的程序 Bug 修复和研究(h)和(k)。

Repairnator 会监控 GitHub 项目的所有持续性活动(c)。持续集成(CI)构建作为整个包含三个步骤的流程的输入:(1)第一阶段收集和分析持续集成构建的日志(e); (2)第二阶段在本地复现持续集成过程中出现的构建失败(f); (3)第三阶段运行来自最新学术研究的不同程序修复原型。

找到补丁后,Repairnator 会执行快速检查,以避免浪费开发人员宝贵的时间。如果经过检查后(i)确认补丁不会引入新的问题,则将其作为 GitHub 的拉取请求提交(j)给项目的原始开发者。接下来开发人员就会遵循他们通常的惯例进行代码审查和合并。

Repairnator 必须在特定的软件生态系统中才能运行。 由于我们在过去的研究项目中专业知识更偏向 Java,因此 Repairnator 的原型实现 更侧重于修复那些用 Java 编写的 GitHub 开源项目,这些项目一般都是基于 Maven 工具链和 Travis CI 持续集成平台构建的。

结   语

“你已经是个成熟的软件了,要学会自己调参修 Bug。”

这本来是一句网络上的段子,却在 AI 不断发展的今天,逐渐变成了现实。不过对于广大程序员来说,这绝对是一项福利,不用被 Bug 逼到头秃,节省出来的时间用来撩妹脱单,啧啧啧~ 简直不要太爽,不过在此之前,可能还得拜托各位研发人员,牺牲一些发量和撩妹的时间,让这一程序普及开来,解救更多被 Bug 所困的同胞吧!

BTW,请问有没有哪位开发大神来做一个自动码字的软件,来满足一下小编的这个愿望,小编在此感激不尽!!!

论文原文链接:

https://arxiv.org/pdf/1810.05806.pdf

参考链接:

https://www.technologyreview.com/s/612336/a-bot-disguised-as-a-human-software-developer-fixes-Bugs/

今日荐文

点击下方图片即可阅读

港珠澳大桥采用人脸识别,无需证件一秒通关



推   荐

有大量的软件工程师有能力利用数据来处理工作,但不知道在工程中如何使用 AI 和机器学习解决问题。什么时候应该使用机器学习算法?什么时候规则引擎是正确的方法?

这里有来自 Google、BAT、美团、京东、小米、今日头条等 40+ 一线技术专家,给大家带来关于机器学习、知识图谱、搜索推荐、计算机视觉、NLP 等热门方向的最新落地案例分享。

目前大会 8 折报名火热进行中,AI 前线给大家带来了一波优惠福利,凭此优惠码“AICon-aifront ”,购买大会门票可以享受 8 折再减 200 元的优惠哦!更多大会详情欢迎咨询票务小姐姐:18514549229(同微信),点击“阅读原文”更精彩。


如果你喜欢这篇文章,或希望看到更多类似优质报道,记得给我留言和点赞哦!


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/FiOVkovS7t
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25566