程序错误自动修复目前面临的问题
我不倾向于认为SemFix/DirectFix/Angelix是和基于搜索的技术截然不同的方法。因为他们实际是把修复问题转成了约束求解问题,而约束求解的SMT Solver用的方法是转成SAT问题,而SAT问题的解法还是搜索。所以归根结底还是搜索。如果要分类,我比较倾向于有完整规约的修复和没有完整规约的修复两类。基于测试的修复工作都是属于没有完整规约的。没有完整规约的修复目前遇到的主要问题是正确率低,即可以得到很多通过测试的(plausible)补丁,但是这些补丁中正确的不多。所以现在做的很多工作都是如何在众多plausible补丁中尽量把正确的给找出来。这里主要用的是一些启发式规则和学习得到的概率模型,比如Prophet的排序,Qlose的语义相似性等等。我们今年的一篇在投工作也是想办法通过启发式规则和概率模型提高正确率(http://arxiv.org/abs/1608.07754)。Westley Weimer在DSN上也有一篇position论文讨论了提高正确率的各种可能方法。有完整规约的工作有相当大一部分都是针对特定类型的缺陷,比如上面提到的蔡彦的DFixer,我们之前也做过修复内存泄露的LeakFix(LeakFix),其规约都是和原程序语义等价。这些工具的问题面向各自不同的领域各不相同。剩下一部分是假设程序中有完整的形式化规约,比如在CAV上的多篇修复的论文,以及裴玉老师的工作。这部分工作的一大问题如果最后要证明规约,通常比较难scale up,支持不了大程序。同时Benchmark也是一个问题,并没有那么多有规约的程序可以做实验。
推荐阅读
- 招聘都要学历,何来程序员不看学历
- 环球车讯网|新款领克01起售价17.98万元,自动驾驶辅助等级达到L2+
- 银行系统的研发岗(程序员)是不是很难进(校招)推广到国企的研发岗(程序员)呢
- 汽车知识|第八代高尔夫到底值不值得买?1.4T自动Pro版全款多少钱?
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 程序猿和产品汪能愉快的一起谈恋爱嘛
- 怎样成为一名合格的Python程序员?
- 我是程序猿养了条狗,取啥名字好
- 学的自动化却对IT比较感兴趣。。感觉对自己的专业帮助不大,好苦恼,要不要继续是专精还是学点感兴趣的?
- 送程序员男友苹果无线耳机还是专业品牌耳机