When Code Completion Fails: A Case Study on Real-World Completions

By Vincent J. Hellendoorn, Sebastian Proksch, Harald C. Gall, Alberto Bacchelli. 2019

86 citations recorded by the source corpus.

Code completion is commonly used by software developers and is integrated into all major IDE's. Good completion tools can not only save time and effort but may also help avoid incorrect API usage. Many proposed completion tools have shown promising results on synthetic benchmarks, but these benchmarks make no claims about the realism of the completions they test. This lack of grounding in real-world data could hinder our scientific understanding of developer needs and of the efficacy of completion models. This paper presents a case study on 15,000 code completions that were applied by 66 real developers, which we study and contrast with artificial completions to inform future research and tools in this area. We find that synthetic benchmarks misrepresent many aspects of real-world completions; tested completion tools were far less accurate on real-world data. Worse, on the few completions that consumed most of the developers' time, prediction accuracy was less than 20% -- an effect that is invisible in synthetic benchmarks. Our findings have ramifications for future benchmarks, tool design and real-world efficacy: Benchmarks must account for completions that developers use most, such as intra-project APIs; models should be designed to be amenable to intra-project data; and real-world developer trials are essential to quantifying performance on the least predictable completions, which are both most time-consuming and far more typical than artificial data suggests. We publicly release our preprint [https://doi.org/10.5281/zenodo.2565673] and replication data and materials [https://doi.org/10.5281/zenodo.2562249].

Subfields: Computer Networks and Communications, Information Systems, Software, Code Generation & Program Synthesis

How researchers see this paper

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

In Computer Networks and Communications

  1. Michihiro Yasunaga
  2. Percy Liang
  3. Romain Robbes
  4. Rafael-Michael Karampatsis
  5. Charles Sutton
  6. Ahmed E. Hassan

In Information Systems

  1. Romain Robbes
  2. Hlib Babii
  3. Andrea Janes
  4. Rafael-Michael Karampatsis
  5. Michihiro Yasunaga
  6. Percy Liang
  7. Charles Sutton
  8. Miltiadis Allamanis

In Software

  1. Michihiro Yasunaga
  2. Percy Liang
  3. Rafael-Michael Karampatsis
  4. Romain Robbes
  5. Hlib Babii
  6. Andrea Janes
  7. Charles Sutton
  8. Miltiadis Allamanis

In Code Generation & Program Synthesis

  1. Romain Robbes
  2. Hlib Babii
  3. Andrea Janes
  4. Rafael-Michael Karampatsis
  5. Charles Sutton
  6. Percy Liang
  7. Michihiro Yasunaga
  8. Miltiadis Allamanis

Citations in the corpus