Extracting Fix Ingredients using Language Models
Julian Aron Prenner, Romain Robbes
TL;DR
This work investigates the role of identifier ingredients in neural program repair and introduces ScanFix, a two-model system combining a dedicated identifier-scanner with a repair model to leverage wider-context information. Empirical analyses on Defects4J and TSSB-3M show identifier ingredients are common and often out-of-context, and that their presence correlates with repair success. The scanner achieves modest extraction performance (F1 ≈ 0.27) and, when integrated with the repair model, provides measurable gains, particularly for far-away ingredients, though a very large input window can yield larger improvements. The results highlight the potential of ingredient scanning as a subtask in NPR while underscoring Sutton’s bitter lesson that expanding context windows can sometimes outperform targeted extraction approaches.
Abstract
Deep learning and language models are increasingly dominating automated program repair research. While previous generate-and-validate approaches were able to find and use fix ingredients on a file or even project level, neural language models are limited to the code that fits their input window. In this work we investigate how important identifier ingredients are in neural program repair and present ScanFix, an approach that leverages an additional scanner model to extract identifiers from a bug's file and potentially project-level context. We find that lack of knowledge of far-away identifiers is an important cause of failed repairs. Augmenting repair model input with scanner-extracted identifiers yields relative improvements of up to 31%. However, ScanFix is outperformed by a model with a large input window (> 5k tokens). When passing ingredients from the ground-truth fix, improvements are even higher. This shows that, with refined extraction techniques, ingredient scanning, similar to fix candidate ranking, could have the potential to become an important subtask of future automated repair systems. At the same time, it also demonstrates that this idea is subject to Sutton's bitter lesson and may be rendered unnecessary by new code models with ever-increasing context windows.
