中文

用于代码补全的语言模型:一项实际评估

软件工程 2024-02-27 v1 机器学习 编程语言

摘要

基于Transformer的自动代码补全语言模型迄今已显示出巨大潜力,然而这些模型的评估很少使用真实数据。本研究对三个公开代码语言模型在补全真实世界代码时进行了定量和定性评估。我们首先开发了一个开源IDE扩展Code4Me,用于模型的在线评估。我们收集了来自1200多名用户超过一年的真实自动补全使用数据,产生了超过60万次有效补全。然后使用六个标准指标在十二种编程语言上评估了这些模型。接下来,我们对1690个真实补全请求进行了定性研究,以识别模型性能不佳的原因。还使用基准合成数据集和两种掩码策略,对模型在在线和离线环境下的性能进行了比较分析。我们的发现表明,虽然开发者在各种语言中使用代码补全,但最佳结果出现在主流语言如Python和Java上。InCoder在所有编程语言上优于其他模型,突显了训练数据和目标的重要性。我们的研究还揭示,离线评估不能准确反映真实场景。在对模型预测进行定性分析后,我们发现66.3%的失败是由于模型的局限性,24.4%是由于开发环境中模型使用不当,9.3%是开发者覆盖的有效请求。基于这些发现,我们提出了几种克服当前局限性的策略,包括优化训练目标、提高对拼写错误的鲁棒性、采用混合方法以及增强实现和可用性。

关键词

引用

@article{arxiv.2402.16197,
  title  = {Language Models for Code Completion: A Practical Evaluation},
  author = {Maliheh Izadi and Jonathan Katzy and Tim van Dam and Marc Otten and Razvan Mihai Popescu and Arie van Deursen},
  journal= {arXiv preprint arXiv:2402.16197},
  year   = {2024}
}

备注

To be published in the proceedings of the 46th IEEE/ACM International Conference on Software Engineering (ICSE 2024)