CORE:面向代码变更的审查建议自动化
软件工程
2019-12-23 v1 机器学习
摘要
代码审查是开发者常用的流程,审查者通过拉取请求对提交的源代码变更提供有用评论或指出缺陷。因其能在早期识别缺陷、维护项目与改进代码,代码审查已广泛应用于工业与开源项目。随着项目开发的快速更新,代码审查对审查者而言成为一项繁重且劳动密集的任务。因此,自动化的代码审查引擎在实践中对项目开发大有裨益。尽管已有研究采用静态分析工具或深度学习技术来实现代码审查自动化,但它们常需部分或完整源代码等外部资源以给出准确审查建议。本文旨在仅基于代码变更及对应审查记录,以更优性能实现代码审查自动化。准确审查建议的关键在于为代码变更与审查学习良好表示。为在有限资源下实现此目标,我们设计了多级嵌入(即词嵌入与字符嵌入)方法来表征代码变更与审查所提供的语义。这些嵌入随后通过所提出的注意力深度学习模型整体训练,该模型统称为 CORE。我们在从 Github 上 19 个流行 Java 项目收集的代码变更与审查上评估了 CORE 的有效性。实验结果表明,我们的 CORE 模型相较最先进模型(DeepMem)性能显著提升,Recall@10 提升 131.03%,平均倒数排名提升 150.69%。项目开发者间的定性通用词分析也展示了 CORE 在自动化代码审查中的性能。
引用
@article{arxiv.1912.09652,
title = {CORE: Automating Review Recommendation for Code Changes},
author = {JingKai Siow and Cuiyun Gao and Lingling Fan and Sen Chen and Yang Liu},
journal= {arXiv preprint arXiv:1912.09652},
year = {2019}
}
备注
Accepted by 27th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)