Code Completion is one of the most used Integrated Development Environment (IDE) features, which affects the everyday life of a software developer. Modern code completion approaches moved from the composition of several static analysis-based contributors to pipelines that involve neural networks. This change allows the proposal of longer code suggestions while maintaining the relatively short time spent on generation itself. At JetBrains, we put a lot of effort into perfecting the code completion workflow so it can be both helpful and non-distracting for a programmer. We managed to ship the Full Line Code Completion feature to PyCharm Pro IDE and proved its usefulness in A/B testing on hundreds of real Python users. The paper describes our approach to context composing for the Transformer model that is a core of the feature's implementation. In addition to that, we share our next steps to improve the feature and emphasize the importance of several research aspects in the area.
翻译:代码补全是集成开发环境(IDE)中最常用的功能之一,影响着软件开发人员的日常工作。现代代码补全方法已从基于静态分析的多个组件的组合,转变为涉及神经网络的流水线。这一变化使得在保持生成过程相对较短的同时,能够提出更长的代码建议。在JetBrains,我们致力于完善代码补全工作流程,使其既能对程序员有所帮助,又不会造成干扰。我们成功将全行代码补全功能部署到PyCharm Pro IDE中,并在数百名真实Python用户的A/B测试中证明了其有效性。本文描述了为Transformer模型(该功能实现的核心)进行上下文组合的方法。此外,我们还分享了改进该功能的后续步骤,并强调了该领域若干研究方面的重要性。