Hoppity: Learning Graph Transformations to Detect and Fix Bugs in Programs

Abstract

We present a learning-based approach to detect and fix a broad range of bugs in Javascript programs. We frame the problem in terms of learning a sequence of graph transformations: given a buggy program modeled by a graph structure, our model makes a sequence of predictions including the position of bug nodes and corresponding graph edits to produce a fix. Unlike previous works that use deep neural networks, our approach targets bugs that are more complex and semantic in nature (i.e.~bugs that require adding or deleting statements to fix). We have realized our approach in a tool called HOPPITY. By training on 290,715 Javascript code change commits on Github, HOPPITY correctly detects and fixes bugs in 9,490 out of 36,361 programs in an end-to-end fashion. Given the bug location and type of the fix, HOPPITY also outperforms the baseline approach by a wide margin.

Cite

Text

Dinella et al. "Hoppity: Learning Graph Transformations to Detect and Fix Bugs in Programs." International Conference on Learning Representations, 2020.

Markdown

[Dinella et al. "Hoppity: Learning Graph Transformations to Detect and Fix Bugs in Programs." International Conference on Learning Representations, 2020.](https://mlanthology.org/iclr/2020/dinella2020iclr-hoppity/)

BibTeX

@inproceedings{dinella2020iclr-hoppity,
  title     = {{Hoppity: Learning Graph Transformations to Detect and Fix Bugs in Programs}},
  author    = {Dinella, Elizabeth and Dai, Hanjun and Li, Ziyang and Naik, Mayur and Song, Le and Wang, Ke},
  booktitle = {International Conference on Learning Representations},
  year      = {2020},
  url       = {https://mlanthology.org/iclr/2020/dinella2020iclr-hoppity/}
}