20250320-AiDD-计算机行业2024AI研发数字峰会AiDD北京站:一种基于修复偏好的自动程序修复工具集成策略.pdf
一种基于修复偏好的自动程序修复
工具集成策略
李传艺南京大学
演讲嘉宾
李传艺
南京大学助理教授
CCF系统软件专委、软件工程专委执行委员。主要研究方向为智能化软件
技术,在ACMTOSEM、IEEETSC、IEEE/ACMTASLP、ACMTKDD、
JSS、InS.、FGCS、JPDC、软件学报、计算机学报和ICSE、ESEC/FSE、
ASE、ACL、AAAI、IJCAI、EMNLP等国内外重要学术期刊和会议发表论
文60余篇,获授权专利6项。主持国家自然科学基金项目、CCF-华为胡杨
林基金项目,以及华为、腾讯、华夏幸福等企业创新项目10余项,成果
研制了一系列智能化软件工具,落地应用于国产编程语言开发环境搭建、
国产操作系统生态建设等信创领域。
4
1.APR研究现状及集成方法
2.本工作动机
目录3.基于修复偏好的集成方案
CONTENTS4.实验和结果讨论
5.总结、展望与补充讨论
PART01
APR研究现状及集成方法
丰富的APR系统(1)
lAPR(AutomatedProgramRepair)旨在自动修复软件系统中的缺陷
l目前已经有超过40种的APR工具,包括
l传统的基于规则的工具l基于神经机器翻译的工具(NPR)l基于大语言模型(LLM)的工具
1.基于启发式搜索:人工定义启发式规则,指导修复补丁的生成过程
例子:GenProg[1],采用遗传算法,以能通过的测试用例的数量为优化目标,不断修改缺陷的代码片段直到产生
通过所有测试用例的代码
2.基于语义约束:通过某种手段推断程序的正确规约,作为约束指导补丁的生成过程
例子:Nopol[2],针对java程序中的条件语句,首先在出错的代码位置搜集所有变量的取值情况,然后根据期望的
条件语句取值情况(true或false),将程序语义编码成为Z3约束求解器的约束进行求解
3.基于修复模板的方法:根据开发者、研究人员的经验或者数据挖掘的结果预定义一些补丁模板或者补丁生成
策略用于指导修复的过程
例子:TBar[3],基于修复模板的大成之作,集成了大量的补丁模板
[1]LeGoues,C.,Nguyen,T.,Forrest,S.,Weimer,W.(2011).Genprog:Agenericmethodforautomaticsoftwarerepair.Ieeetransactionsonsoftware
engineering,38(1),54-72.
[2]Xuan,Jifeng,etal.Nopol:Automaticrepairofconditionalstatementbugsinjavaprograms.IEEETransactionsonSoftwareEngineering43.1
(2016):34-55.
[3]Liu,K.,Koyuncu,A.,K