麻省理工学院电子工程与计算机科学教授Martin Rinard和学生Fan Long开发出了一款机器学习系统,能够对开源计算机程序的修复进行梳理,并学习相关程序属性,从而为不同的程序生成新的修复。
Fan Long和Martin Rinard的设计中最关键的一个方面就是该系统所分析的“特征组”的选择。研究人员重点关注存储在内存中的值:一种是可能在程序执行过程中修改的变量,另一种则是不能修改的常量。他们为给定值确定了30个基本特征:这些给定值既可以用于类似加法、乘法或比较(比大于或等于)等运行过程;也可以用于本地运行,也就是说可以仅出现在一个单独的代码块里,或者能够被广泛应用,能够被程序作为一个整体进行访问;此外还可以是代表最终计算结果的变量,等等。
Fan Long和Martin Rinard编写了一个计算机程序,对连续代码行特征之间可能存在的关系进行评估。总共有3500多个这样的关系构成了代码行的特征组。之后,他们所设计的机器学习算法尝试着确定哪些特征组合能够最大程度地预测补丁成功性。
原文:Recognizing correct code
译文:使用了深度学习——错误程序自动修复系统效率增高十倍 by 人工智能学家
相关:碉堡了!麻省理工学院开发出自动修复 Bug 的系统 by 伯乐在线