软件缺陷自动修复是近年来兴起的新研究领域。给定一组测试,其中包含没有通过的测试,软件缺陷自动修复技术通过不断修改程序最终使得所有测试都得以通过。但是,软件缺陷修复却有一个与生俱来的重大缺陷:修复与测试过拟合(Overfitting)问题。熊英飞研究员带领的课题组近年来对软件缺陷修复技术进行了大量研究,提出了解决过拟合问题的新途径。提出:如果仅仅针对测试去生成修复,很可能产生过拟合的修复。但程序员往往并不只是依赖测试去修复软件中的缺陷,相反,程序员会利用他们自身的经验,判断出什么样的修复才是一个正确的修复。如果能成功的获取程序员头脑中的开发知识,就能够在很大程度上避免过拟合问题。基于这个思想,他们提出了一个基于问答网站的缺陷修复技术。形如Stackoverflow、CSDN论坛这样的问答网站上常常包括大量关于缺陷修复的问答,如果能成功提取这些网站中所包含的修复知识,就能够基于这些知识产生正确的修复,避免过拟合问题。熊英飞研究员的课题组提出了一种通过以比较代码为基础的知识提取和修复生成技术。当一个缺陷发生时,该技术首先寻找最相关的问答页面。然后通过比较该页面上的代码片段找到可行的修复方案,最后再把该修复方案应用回原项目。通过这个技术,他们成功地为10个缺陷产生了修复补丁,其中8个是正确的。该成功率显著超越了已有技术:根据麻省理工大学Rinard教授的ISSTA论文的测算,现有三个主流技术能达到的正确率均不超过10%,而该论文一次性将正确率提升至80%。该研究成果发表在CCF A类会议ASE 2015上。会议审稿人对该论文的评价是“very novel piece of research(非常有创新的工作)”“when the tool actually does produce a fix,it works 80% of the time(当该工具产生一个修复的时候,80%的情况都是正确的)”。“I can see developers wanting to use something like this(Heck,I would like something like this)。(我可以预见开发人员想要使用这样的技术。嘿,我自己就需要这样的技术)”。
该研究在以熊英飞研究员为首席科学家的青年973项目、自然科学基金青年基金项目等资助下完成。