国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:刘书宁,吴毅坚,宋学志,陈碧欢,彭鑫,赵文耘
单位:刘书宁,复旦大学 计算与智能创新学院, 上海 200438;上海市数据科学重点实验室(复旦大学), 上海 20043811,吴毅坚,复旦大学 计算与智能创新学院, 上海 200438;上海市数据科学重点实验室(复旦大学), 上海 20043802,宋学志,复旦大学 计算与智能创新学院, 上海 200438;上海市数据科学重点实验室(复旦大学), 上海 20043803,陈碧欢,复旦大学 计算与智能创新学院, 上海 200438;上海市数据科学重点实验室(复旦大学), 上海 20043804,彭鑫,复旦大学 计算与智能创新学院, 上海 200438;上海市数据科学重点实验室(复旦大学), 上海 20043805,赵文耘,复旦大学 计算与智能创新学院, 上海 200438;上海市数据科学重点实验室(复旦大学), 上海 20043806
关键词:缺陷隔离;代码变更;语义分析;大语言模型
基金:国家自然科学基金(62172099)
在现代软件开发中, 频繁的代码提交和更新已成为常态, 虽然加速了功能实现, 但更可能会引入新的缺陷, 进而威胁软件的稳定性和可靠性. 一旦缺陷导致程序错误或故障, 开发团队必须迅速采取行动隔离缺陷以确保系统持续正常运行. 缺陷隔离是快速定位问题并恢复系统稳定性的关键技术手段, 但传统的增量调试(delta debugging, DD)方法依赖大量测试尝试, 导致在变更集合较大时性能瓶颈明显, 且缺乏对代码变更语义的有效利用, 无法精准定位与缺陷相关的代码变更. 提出了一种基于代码变更语义分析的缺陷隔离方法——DISAC. 该方法通过将缺陷引入的复合提交拆解为具有单一功能语义的原子提交, 并通过建模提交之间的顺序依赖关系, 确保隔离过程中不破坏变更间的前置依赖. 与传统的DD方法相比, DISAC不仅能够返回最小的功能语义变更, 还能保留必要的上下文和依赖信息, 从而为开发人员提供更完整、精确的缺陷修复支持. 实验结果表明, 与DD方法相比, DISAC在缺陷隔离效率和精度上均有显著提升. 具体而言, DISAC在Defects4J数据集上的隔离效率提高了633.65%, 在回归缺陷集上的效率提升了733.75%. 此外, 当DISAC与DD结合使用时, 约减率分别提高了2.36%和8.66%, 显著提高了隔离效果. 用户实验显示, DISAC能提高根因确定效率约59.90%, 准确率提升12%. 这些结果表明, DISAC在提高缺陷隔离精度的同时减少了不必要的变更组合尝试, 从而在复杂代码提交的缺陷隔离任务中表现出更高的效率和稳定性.
来源:2026年第5期
《软件学报》期刊编辑部