CodeFill: Multi-token Code Completion by Jointly learning from Structure and Naming Sequences

By Maliheh Izadi, Roberta Gismondi, Georgios Gousios. 2022

128 citations recorded by the source corpus.

Code completion is an essential feature of IDEs, yet current auto-completers are restricted to either grammar-based or NLP-based single token completions. Both approaches have significant draw-backs: grammar-based autocompletion is restricted in dynamically-typed language environments, whereas NLP-based autocompleters struggle to understand the semantics of the programming language and the developer's code context. In this work, we present CodeFill, a language model for autocompletion that combines learned structure and naming information. Using a parallel Transformer architecture and multi-task learning, CodeFill consumes sequences of source code token names and their equivalent AST token types. Uniquely, CodeFill is trained both for single-token and multi-token (statement) prediction, which enables it to learn long-range dependencies among grammatical and naming elements. We train CodeFill on two datasets, consisting of 29M and 425M lines of code, respectively. To make the evaluation more realistic, we develop a method to automatically infer points in the source code at which completion matters. We compare CodeFill against four baselines and two state-of-the-art models, GPT-C and TravTrans+. CodeFill surpasses all baselines in single token prediction (MRR: 70.9% vs. 66.2% and 67.8%) and outperforms the state of the art for multi-token prediction (ROUGE-L: 63.7% vs. 52.4% and 59.2%, for $n=4$ tokens). We publicly release our source code and datasets.

Subfields: Artificial Intelligence, Information Systems, Code Generation & Program Synthesis, Signal Processing

How researchers see this paper

The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.

In Artificial Intelligence

  1. Mohit Bansal
  2. Jianfeng Gao
  3. Luke S. Zettlemoyer
  4. Thomas Wolf
  5. Kyunghyun Cho
  6. Yoshua Bengio
  7. Daniel Fried
  8. Yacine Jernite

In Information Systems

  1. Raymond Li
  2. Carolyn Jane Anderson
  3. Harm de Vries
  4. Carlos Muñoz Ferrandis
  5. Danish Contractor
  6. Arjun Guha
  7. Hailey Schoelkopf
  8. Loubna Ben Allal

In Code Generation & Program Synthesis

  1. Qian Liu
  2. Raymond Li
  3. Carolyn Jane Anderson
  4. Arjun Guha
  5. Dzmitry Bahdanau
  6. Daniel Fried

In Signal Processing

  1. Qian Liu
  2. Raymond Li
  3. Harm de Vries
  4. Carlos Muñoz Ferrandis
  5. Danish Contractor
  6. Arjun Guha
  7. Loubna Ben Allal
  8. Denis Kocetkov

Citations in the corpus