一句话:提出多任务深度学习框架 COMPDEFECT,统一函数级缺陷预测、缺陷类型分类与自动修复。
现有即时缺陷预测方法存在三方面局限:仅部分利用代码语义或结构信息、只给出提交级 buggy/clean 粗粒度结果、且缺陷预测与修复模型相互独立。为此,论文提出统一框架 COMPDEFECT,可判断提交中变更函数是否易缺陷、分类缺陷类型,并在单语句修复或匹配小型缺陷模板等场景下自动修复缺陷。技术上,前两个任务被建模为多类分类,修复任务被建模为序列生成。作者构建了 21,047 个函数级样本的大规模数据集 Function-SStuBs4J,并以五项指标与数十种 SOTA 方法比较。实验表明 COMPDEFECT 在三个任务上均显著优于所有 SOTA,且流水线实验验证了在一个模型中统一三任务的可行性。
Just-In- Time defect prediction models can identify defect-inducing commits at check-in time and many approaches are proposed with remarkable performance. However, these approaches still have a few limitations which affect their effectiveness and practical usage: (1) partially using semantic information or structure information of code, (2) coarsely providing results to a commit (buggy or clean), and (3) independently investigating the defect prediction model and defect repair model. In this study, to handle the aforementioned limitations, we propose a unified defect prediction and repair framework named COMPDEFECT,which can identify whether a changed function inside a commit is defect-prone, categorize the type of defect, and repair such a defect automatically if it falls into several scenarios, e.g., defects with single statement fixes, or those that match a small set of defect templates. Technically, the first two tasks in COMPDEFECT are treated as a multiclass classification task, while the last task is treated as a sequence generation task. To verify the effectiveness of COMPDEFECT, we first build a large-scale function-level dataset (i.e., 21,047) named Function-SStuBs4J and then compare COMPDEFECT with tens of state-of-the-art (SOTA) approaches by considering five performance measures. The experimental results indicate that COMPDEFECT outperforms all SOTAs with a substantial improvement in three tasks separately. Moreover, the pipeline experimental results also indicate the feasibility of COMPDEFECT to unify three tasks in a model.