软件开发过程中 Bug 的存在无可避免。对工程师来说,“找 Bug 修 Bug”是一趟没有终点的旅程,工作中必须为此消耗大量时间与资源,因此开发者多半都非常期望能有快速、高质量的机器人来搜寻错误代码并协助修补……

1789年本杰明•富兰克林写道:“在这个世界上,除了死亡和税收外,没有什么可以说是确定无疑的。”但如果富兰克林生活在现代,他可能会另外添加“软件bug”这一项。

软件开发过程中 Bug 的存在无可避免。对工程师来说,“找 Bug 修 Bug”是一趟没有终点的旅程,工作中必须为此消耗大量时间与资源,因此开发者多半都非常期望能有快速、高质量的机器人来搜寻错误代码并协助修补。

修 Bug 是所有软件开发计划的常见过程,计算机科学家早就知道自动化编写修补程序理论上可行,但不清楚的是机器人程序能否像人类一样快速完成这项工作并达到相同的质量。以目前来说,尽管许多研究人员已开发出可自动完成这项过程的机器人,但不是速度太慢就是写的代码不够好到能用。

经过数年努力下,瑞典皇家理工学院(KTH)马丁•蒙佩卢斯(Martin Monperrus)团队成功测试出有人类竞争力的机器人“Repairnator”,团队认为这是自动化修复研究的里程碑。

Repairnator的自动程序员编写的补丁好得足以骗过真正的人类工程师,但团队如何证实它“具人类竞争力”?其实答案很简单,那便是让 Repairnator 伪装成人类开发员,在 GitHub 协助产生修补程序来修复漏洞,看看人类开发者能否接受其为对代码库的有效贡献。

团队为 Repairnator 建了一个名为 Luc Esape 的 GitHub 用户,看起来似乎就是研究实验室的软件工程师。为了让 Luc 的存在更真实,团队还上传了一张个人照片,让它看起来就像初级开发人员渴望在 GitHub 对开源大力贡献。
repairnator-1.png
这种欺骗很有必要,因为人类版主往往以不同的视角或标准来评估机器人的工作和人类的工作。蒙佩卢斯和他的团队认为:“为了测试与人类相竞争的科学假设,这种伪装必不可少。”他们现在已向相关人员告知了真相。

2017 年 2~12 月,团队进行第一次实验,让 Repairnator 原型持续在 14,188 个 GitHub 项目的固定列表寻找错误;Repairnator 每天约能执行 30 次修 Bug 尝试,在这段期间,Repairnator 分析超过 11,500 个漏洞,并能在 3,000 多个案例中重现失败,最终开发了 15 个案例的修补程序。
repairnator-2.png
但这些修补程序最终都没有被接受,因为 Repairnator 不是花太长时间开发,就是编写修补程序的质量过低而没有被使用者接纳。

相较之下,第二次实验就较成功。虽然团队并未具体说明改进 Repairnator 哪些地方,但 2018 年 1~6 月期间,团队让它透过 Travis 持续向开发者提供协助。而在 1 月初,Repairnator 编写的修补程序首次被人类开发者接受。
repairnator.png
(Source:arXiv.org)

接下来 6 个月里,Repairnator 继续制作的 5 个修补程序也都顺利被人类使用者接纳。团队认为这项令人印象深刻的工作为新一代软件开发奠定了基础,同时也引申出一些有趣的问题。

5 月 12 日 Repairnator 为 GitHub 项目“eclipse/ditto”开发修补程序后,收到开发人员的信息:“我们只能接受签署 Eclipse Contributor Agreement 协议用户的协助修订(Pull Requests)。”

蒙佩卢斯认为,这引申出一个有趣的问题,因为机器人无法签署许可协议。“谁有机器人贡献的知识财产权和责任──机器人操作员,机器人执行者还是修复算法的设计师?”

在人类和机器人更密切合作之前,这类问题必须解决。但蒙佩卢斯对此非常乐观。“我们相信 Repairnator 预先展示了软件开发的某种未来,机器人和人类将会好好合作,甚至携手开发软件。”

最后,我们可以用一句网络上的段子来结尾:

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

参考论文:《用Repairnator自动修复程序,编写出与人类不相上下的补丁》

repairnator-3.png

repairnator-4.png

repairnator-5.png
本文综合自云头条、Technews、IT程序猿、开源中国报道

 

 

qrcode_EETCwechat_120.jpg

关注最前沿的电子设计资讯,请关注“电子工程专辑微信公众号”

  • 这个快点实现吧,让我在软件排错上少费脑力。
阅读全文,请先
您可能感兴趣
虽然众多不同边缘设备的要求都各不相同,但它们基本上都是为了最大程度地提高性能,降低功耗,并尽量减少所需的物理空间。设计工程师如何作出合适的权衡才能应对这些挑战?现有 AI 处理器的性能往往受到带宽限制,并且在将数据移入和移出外部内存时也会遇到瓶颈,导致系统利用率低,这也就意味着性能/功率数值(以 TOPS/Watt 为单位)受到限制。
近来芯片行业都在不停的提速,5nm 3nm 华为 苹果都在不断地推陈出新,所以在半导体制造领域最大挑战是节点微缩和规模扩大带来的良率问题
人工智能 (AI) SoC 的市场持续增长,竞争也日趋激烈。半导体公司根据性能、成本和灵活性,来找到自己的定位,并不断自我优化,从而导致了新型多核架构的爆发式增长。系统架构师正在尝试不同的方法,希望可以将这种复杂性转化为竞争优势。
现今的汽车中使用了各种IC。其中每一个IC都必须首先满足汽车电子委员会(AEC)制定的汽车级制造和性能认证标准。除了AEC认证之外,还有额外的专用功能安全就绪特性要求,具体取决于器件和应用......
无论从展现形式还是从功能的角度来说,现代 MBSE 方法与以前的方法都大相径庭。其中,最重要的区别可能在于捕捉、存储和共享系统信息的方式。如今,数据都采用集中存储的方法,并能够安全地对接到其它相关信息中,进而形成覆盖开发流程直至服务运营的系统架构或路线图。
和前几年的调查结果一样,Go 主要在科技行业被广泛使用。70% 的受访者是软件开发者,少数从事 IT 或 DevOps 工作。76% 的受访者表示他们在工作中使用 Go 进行编程。72% 的受访者表示他们使用 Go 开发 API/RPC 服务,其他的主要用途是 Web 服务、库或框架、自动化部署和数据分析等......
由于采用性能相对强大的M1处理器和mini-LED屏幕以及更多的创新,新款iPad Pro 2021已经成为消费者心目中最受欢迎。然而,iPad 2却已经在全球范围内被列入“复古和过时”的名单中。
目前来看,折叠屏新机作为一种新的生产力工具,逐渐成为高端/平板的一种趋势,有报料称三星的Galaxy Z Fold 3发布时间或为7月,并且会引入新手势操控。

北京时间2022年7月4日晚,在“小米影像战略升级暨小米新品发布会”上,小米正式发布xiaomi Book Pro 旗舰笔电产品,其人机交互关键组件——压感触控板搭载了
英飞凌科技与合众新能源旗下的哪吒汽车日前在中国桐乡共同举办哪吒天工电池与英飞凌BMS整体解决方案技术合作发布仪式。
点击上方蓝字关注我们作者:王博,极视角科技算法研究员微信公众号:OpenCV学堂关注获取更多计算机视觉与深度学习知识简单说明分别使用OpenCV、ONNXRuntime部署YOLOV7目标检测,一共包
01 前言 工作中的电路板有许多发热比较大的元器件,比如MOS管、LED、三极管,尤其在满载的情况下更为严重,散热通孔是众所周知的一种通过电路板表面贴装元件的散热方法。在结构上,板上开有一个通孔,如果
SoC功能不断丰富,带来的软硬件设计的复杂度不断提升    随着社会应用的不断丰富,芯片要满足日益增长的市场需求,那么芯片设计的选型就非常的关键,从制程、功耗、IP等方方面面的考虑,芯片的设计成本和制
7月13日,2022年长三角生态绿色一体化发展示范区开发者大会暨首届示范区全链接大会正式举行,消息显示,华为投资近160亿元建设的青浦研发中心项目,预计在2023年底左右整体交付。据了解,华为青浦研发
文 | 乔伊这年头,造车、卖车其实是一个挺难的活。既要把自己的产品贴上合适的标签,以明确自己的目标客群,卖出人群的区隔感;又要想办法,尽可能关照到更多人的需求,以推动销量的持续上涨;还要让旁观者,主动
文 | 杜德彪B+级市场是个危险领域。这里或许是片热土,隔三岔五你就能看到某个实力不俗的家伙试图冲击高端,但这里绝不是片乐土,因为你也屡屡能看到折戟沉沙的存在。例外还是有的,比如一汽丰田亚洲龙,除了以
点击上方“皇华电子元器件”关注我们1、英特尔通知客户下半年将涨价,涨幅最高或超20%媒体报道,英特尔已通知其客户,将在2022年下半年提高大部分微处理器和外围芯片产品的价格。英特尔表示,由于生产和材料
进入互联网时代,随着互联网+医疗健康、智慧医疗、远程医疗不断融入社会,健康穿戴行业迎来了黄金发展期。随着市场从业企业越来越多,同质化竞争现象也越来越严重,不仅影响到消费者的使用体验,也从根本上制约了行
作者:Littelfuse应用工程全球负责人Martin Schulz博士随着重型或商用车辆的电气化,为比电动乘用车更大的电池充电变得必要。由于时间就是金钱,特别是在物流领域,分配空闲时间进行充电或增
    转眼在我厂已经度过近22年,近日跟部门领导和HR正式提出了退休申请。华为或将是我经历的唯一职场,趁着这段时间,回忆这段职业之路,对自己做个小结。未来将调整好身体、补充新知识、开启新生命历程。0