代码生成技术的鲁棒性研究:基于 GitHub Copilot 的实证分析
软件工程
2023-02-02 v1
摘要
软件工程研究一直关注代码补全方法的改进,这类方法在开发者编码时建议其可能键入的下一个词元。GitHub Copilot 的发布是一大进步,也因其前所未有的能力——甚至可从自然语言描述自动生成整个函数。尽管 Copilot 的实用性显而易见,其在多大程度上具备鲁棒性仍不清楚。具体而言,我们不知提供给模型的自然语言描述中保持语义的改动会在多大程度上影响所生成代码函数。本文呈现一项实证研究,旨在理解不同但语义等价的自然语言描述是否会导致相同的推荐函数。否定答案将对基于深度学习(DL)的代码生成器的鲁棒性提出质疑,因为这意味着使用不同措辞描述同一代码的开发者会得到不同推荐。我们让 Copilot 从其原始 Javadoc 描述自动生成 892 个 Java 方法。随后,我们为每个方法手动与自动地生成不同的语义等价描述,并分析 Copilot 生成的预测在多大程度上发生变化。结果表明,修改描述导致约 46% 的情况下代码推荐不同;并且语义等价描述中的差异可能影响所生成代码正确性的约 28%。
引用
@article{arxiv.2302.00438,
title = {On the Robustness of Code Generation Techniques: An Empirical Study on GitHub Copilot},
author = {Antonio Mastropaolo and Luca Pascarella and Emanuela Guglielmi and Matteo Ciniselli and Simone Scalabrino and Rocco Oliveto and Gabriele Bavota},
journal= {arXiv preprint arXiv:2302.00438},
year = {2023}
}