中文

关于 BERT 模型用于代码补全的实证研究

软件工程 2021-03-15 v1

摘要

代码补全是现代集成开发环境(IDEs)的主要功能之一。其目标是通过预测开发者可能编写的下一个代码标记来加速代码编写。该领域的研究已大幅提升了这些技术的预测性能。然而,对开发者的支持仍局限于预测接下来要输入的少数几个标记。在这项工作中,我们朝此方向更进一步,提出一项大规模实证研究,旨在探索最先进的深度学习(DL)模型在不同粒度级别支持代码补全的能力,包括单个标记、一个或多个完整语句,直至整个代码块(例如 for 循环的迭代块)。为此,我们训练并测试了近期提出的 RoBERTa 模型的若干适配变体,并从多个角度评估其预测,包括:(i)评估 DL 生成模型时常采用的指标(即 BLEU 分数与莱文斯坦距离);(ii)完美预测的百分比(即与开发者所写代码匹配的预测代码片段);以及(iii)所生成代码相对于开发者所写代码的“语义”等价性。所得结果表明,BERT 模型代表了代码补全的可行方案,完美预测率从未要求模型猜测整个块时的约 7%,到在同一代码语句中掩码少量标记的较简单场景下达约 58% 不等。

关键词

引用

@article{arxiv.2103.07115,
  title  = {An Empirical Study on the Usage of BERT Models for Code Completion},
  author = {Matteo Ciniselli and Nathan Cooper and Luca Pascarella and Denys Poshyvanyk and Massimiliano Di Penta and Gabriele Bavota},
  journal= {arXiv preprint arXiv:2103.07115},
  year   = {2021}
}

备注

Accepted to the 18th International Conference on Mining Software Repositories (MSR 2021)