Analyzing and Repairing Compilation Errors

Ali Mesbah
Andrew Rice
Eddie Aftandilian
Nick Glorioso
International Conference on Software Engineering (ICSE), poster track (2019) (to appear)

Abstract

Resolving a build failure consumes developer time both in finding a suitable resolution and in rerunning the build. Our goal is to develop automated repair tools that can automatically resolve build errors and therefore improve developer productivity.

We collected data on the resolution of Java build failures to discover how long developers spend resolving different kinds of diagnostics at Google. We found that the diagnostic reporting an unresolved symbol consumes 47% of the total time spent resolving broken builds. We found that choice of tool has a significant impact: 26% of command line builds fail whereas only 3% of IDE builds fail. However, the set of most costly diagnostic kinds remains the same for both.

We trained a Neural Machine Translation model on the Abstract Synxtax Tree changes made when resolving an unresolved symbol failure. This generates a correct fix with a true positive rate of 50%.