查看原文
其他

程序员的福音,微软正在训练AI自动Debug

看雪学苑 2022-05-03

编辑:左右里


对于软件开发工程师来说,查找和修复代码中的bug通常是一项非常折磨人的日常工作。微软希望将开发工程师从Debug中解放出来,让他们有更多的时间处理软件开发中更关键也更有趣的部分。


如今正火热的深度学习是否能够帮助开发工程师解决这个问题以更快更好地交付软件呢?微软在2021年神经信息处理系统会议(NeurIPS 2021)上发表的一篇新论文《自我监督的bug检测和修复》中,展示了一个有前途的深度学习模型,微软将其称为BugLab。BugLab可以通过“捉迷藏(hide and seek)“游戏来学习检测和修复错误,而无需使用标记数据。


对于AI来说,要查找和修复代码中的 bug,不仅需要对代码的结构进行推理,还需要理解软件开发人员在代码注释、变量名称等之中留下的“模棱两可“的自然语言提示。以下面的GitHub 开源项目中的代码片段为例:



在这里,开发工程师的意图通过自然语言注释以及代码的高级结构表现得很清楚。其中存在一个错误,使用了错误的比较运算符。在这个例子中,微软的深度学习模型能够正确识别此错误并提醒开发人员。


同样地,在另一个开源项目中,AI检测出代码错误地检查了变量write_partition是否为空,而不是正确的变量read_partitions。



为了解决缺乏训练数据这个问题,微软提出了BugLab,它使用两种互相竞争的模型(bug选择器与bug检测器),通过玩“hide and seek“游戏来学习,该游戏会给一些假定为正确的现有代码,bug选择器模型决定它是否应该引入bug、在哪里引入,以及确切形式。然后,另一个bug检测器模型会去检查代码中是否引入了bug,如果是,将其找到并修复。


这两个模型在没有标记数据的情况下进行联合训练,即以自我监督的方式,在数百万个代码片段上进行训练。Bug选择器学习尽量去隐藏错误,而bug检测器越来越能够检测和修复错误。


目前的结果是有26%的错误可以自动找到并修复,并且存在许多误报,在使其真正发挥作用之前,微软还有很长的路要走。



资讯来源:微软官方
转载请注明出处和本文链接




推荐文章++++

核弹级漏洞——Apache Log4j 2 远程代码执行漏洞事件详情及修复方式2021年报告的漏洞总数揭露,创历史新高全球范围多家知名平台受波及,亚马逊云服务中断商店或关闭或只支持现金,英国北部SPAR遭遇IT中断加密货币失窃超1.2亿美元,金融平台BadgerDAO遭黑客攻击近两万钱骡,欧洲第七次联合打击洗钱行动落幕家贼难防,Ubiquiti前雇员窃取公司数据并实施勒索






公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com




球分享

球点赞

球在看



戳“阅读原文”一起来充电吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存