20250320-中智凯灵_北京_科技-一种基于修复偏好的自动程序修复工具集成策略_33页_6mb
报告摘要
2024 AI+研发数字峰会总结
核心内容
本次峰会聚焦于AI驱动研发变革,旨在通过人工智能技术提升软件开发效率,帮助企业降本增效。会议特别讨论了基于修复偏好的自动程序修复(APR)工具集成策略,由南京大学的李传艺助理教授进行主题分享。该研究提出了一种新的集成方法,称为P-EPR(Preference-based Ensemble Program Repair),通过结合不同APR工具的修复偏好,实现更高效、更智能的缺陷修复。
主要观点
- APR工具多样性:目前已存在超过40种APR工具,包括基于规则、神经机器翻译(NPR)和大语言模型(LLM)的工具。
- 传统方法局限性:基于学习的集成方法存在训练数据构造成本高、特征选取随机性大、新增工具代价高等问题。
- P-EPR的优势:
- 不需要专门的训练数据
- 可灵活添加新工具
- 随着修复历史数据积累,性能逐步提升
- 优先选择传统工具,提升可解释性和可信度
- LLM在APR中的应用:随着GPT-3.5等大语言模型的出现,LLM-based APR工具成为主流,如ChatRepair、RTTAPR、Srepair、ThinkRepair、FixAgent等。
关键信息
APR研究现状
- APR旨在自动修复软件系统中的缺陷
- APR工具类型包括:
- 基于启发式搜索:如GenProg,使用遗传算法优化测试用例覆盖率
- 基于语义约束:如Nopol,通过Z3求解器进行约束推理
- 基于修复模板:如TBar,利用预定义的修复模板生成补丁
- NPR工具:如CoCoNuT、SequenceR、DLFix、CURE、Circle等,结合上下文感知和神经网络模型进行修复
- LLM-based APR工具:如AlphaRepair、RepairLLaMA、Srepair、FixAgent等,利用预训练模型进行修复任务
P-EPR集成方案
- 修复偏好:定义4类Bug特征,与APR工具的修复能力进行映射
- BF1: Bug语句节点类型
- BF2: Bug语句子节点类型
- BF3: BF1和BF2的组合
- BF4: 测试错误类型
- 工具分类:
- 基于启发式规则
- 基于约束
- 基于模板
- 算法流程:
- 提取Bug特征
- 计算工具的基础得分(基于历史修复数据)
- 如果Bug特征与工具修复偏好匹配,进行加分处理
- 按得分排序,依次执行工具并记录结果
- 冷启动问题:初始修复历史为空时,工具得分较低,难以被选中
实验与结果
- 仿真实验:测试21个APR工具,评估正确修复和似真补丁数量、工具调用和人工验证开销
- 真实执行实验:在Defects4J和Bears数据集上测试,生成300个补丁,自动验证时间限制为2小时,人工验证时间为10分钟
- 实验结果:
- P-EPR在正确修复数量和精准率上优于所有单个NPR工具
- 工具调用和人工验证开销显著降低
- 与E-APR对比:P-EPR在性能上更优,且更容易扩展
LLM-based Self-enhancing APR泛化性
- SRepair:基于LLM的自增强方法在Defects4J上表现优异,修复近300个Bug
- 泛化性评估:
- 在HumanEval-Java和BugsInPy上也有不错表现
- 但效果因数据集而异,记忆程度对性能有显著影响
- 实验发现:
- 使用微调后的LLM提升性能
- 降低LLM对新数据集的记忆程度会降低修复效果
总结与展望
- 集成优势:多种APR工具能力互补,集成方案在提升修复性能的同时,显著降低工具调用和人工验证的开销
- 未来方向:
- 优化Top 1选中正确APR工具的概率
- 尝试用“基于学习的策略”度量NPR和Bug之间的关联
- 构造包含Bug知识的数据集,微调Base LLM以提升性能
- 持续更新评测数据集,使用新Bug数据进行训练和测试
补充讨论
- LLM记忆程度影响:LLM对数据集的记忆程度与修复效果密切相关,记忆越多效果越好
- 自增强方法的潜力:LLM-based自增强方法在修复性能上超越传统方法和NPR工具
- 挑战与限制:并非所有缺陷修复场景下都能获取额外信息(如测试用例、报错信息等),影响方法的适用性
参考文献
- Xia, C. S., & Zhang, L. (2022). Less training, more repairing please: revisiting automated program repair via zero-shot learning.
- Xiang, J., Xu, X., Kong, F., Wu, M., Zhang, H., & Zhang, Y. (2024). How far can we go with practical function-level program repair? arXiv preprint arXiv:2404.12833.
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载