摘要
基于机器学习的软件修复方法可以降低软件缺陷修复成本,无须人工干涉而自动修复软件缺陷,但不同的缺陷修复软件对不同类型缺陷的修复偏好不明确,且缺乏针对性而无法充分发挥深度学习模型的作用;为此在研究缺陷分类的基础上,研究几种具有代表性基于深度学习的软件自动修复方法对不同类型的缺陷总的修复概率,并比较分析不同学习模型对于修复不同类型缺陷的修复偏好,后续可以更好地进行模型选择以及软件自动修复工作。实验结果表明,基于深度学习的软件自动修复方法倾向于修复IF语句类型、方法语句类型、return语句类型的缺陷。基于自编码器的软件自动修复方法倾向于修复IF语句类型的缺陷,基于LSTM的编码器-解码器的修复方法倾向于修复与方法语句类型相关的缺陷,而基于CNNs的编码器-解码器的修复方法则对IF语句类型、方法语句类型以及return语句类型这三种类型缺陷的修复偏好相差不大。
- 单位