中文

结合代码嵌入与静态分析的函数调用补全

软件工程 2020-11-03 v2

摘要

代码补全是集成开发环境(IDEs)的一项重要功能。它使开发者能够更快地编写代码,尤其是那些不熟悉 API 和其他代码的初学者。以往关于代码补全的研究主要利用了编程语言的静态类型系统,或正在开发的项目以及使用通用 API 的其他项目的代码历史。本文中,我们提出一种新方法,通过从独立的代码仓库中学习,使用知名的自然语言处理模型(可学习源代码向量表示,即代码嵌入)来改进现有的函数调用补全工具。我们的模型并非在特定项目的历史数据上训练。相反,我们的方法能够学习数千个项目中存在的高层概念及其关系。因此,所得系统能够提供不特定于某个项目或 API 的通用建议。此外,通过考虑待补全调用的上下文,我们的方法能建议与该上下文相关的函数调用。我们在一组训练期间未见过开源项目上评估了我们的方法。结果表明,将训练好的模型与基于静态类型分析的代码建议插件结合使用,显著提高了补全建议的正确性。

关键词

引用

@article{arxiv.2008.03731,
  title  = {Combining Code Embedding with Static Analysis for Function-Call Completion},
  author = {M. Weyssow and H. Sahraoui and B. Frénay and B. Vanderose},
  journal= {arXiv preprint arXiv:2008.03731},
  year   = {2020}
}