程序员的福音,微软正在训练AI自动Debug
对于软件开发工程师来说,查找和修复代码中的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%的错误可以自动找到并修复,并且存在许多误报,在使其真正发挥作用之前,微软还有很长的路要走。
推荐文章++++
﹀
球分享
球点赞
球在看