Sequence Model Design for Code Completion in the Modern IDE Gareth Ari Aye Gail E. Kaiser Google Inc., Columbia University Columbia University
[email protected] [email protected] ABSTRACT 1 INTRODUCTION Code completion plays a prominent role in modern integrated de- Code completion is a tremendously popular tool for coding assis- velopment environments (IDEs). Machine learning has become tance, implemented across a wide range of programming languages ubiquitous in analogous natural language writing and search so- and environments. In An Empirical Investigation of Code Comple- ware, surfacing more relevant autocompletions and search sug- tion Usage by Professional Soware Developers, Marasoiu et al. map gestions in fewer keystrokes. Prior research has reported training out the diversity of use cases it fullls for programmers, including high-accuracy, deep neural networks for modeling source code, but correctness checking, typing assistance, and API search [24]. A lile aention has been given to the practical constraints imposed study of programmers’ behaviors within the Eclipse IDE found by interactive developer tools. that autocomplete was used up to several times per minute [28], In particular, neural language models for source code modeling as oen as copy-paste! Historically, completion suggestions have like the one described in Maybe Deep Neural Networks are the Best been based primarily on static analysis and, as a result, suered Choice for Modeling Source Code[20] are framed around code comple- from low relevance [9]. Applying the constraints imposed by a tion, but only report accuracy of next-token prediction. However, programming language’s grammar and type system produces all in order for a language model (LM) to work well within real-world valid suggestions but says nothing about which are likely.