Analyzing and Repairing Compilation Errors
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%.
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%.