Revisiting Unnaturalness for Automated Program Repair in the Era of Large Language Models
Aidan Z.H. Yang, Sophia Kolak, Vincent J. Hellendoorn, Ruben Martins,, Claire Le Goues

TL;DR
This paper explores using entropy from large language models to enhance automated program repair by improving fault localization, patch ranking, and efficiency, achieving significant performance gains over existing methods.
Contribution
It introduces a novel entropy-based approach that complements existing APR tools, improving fault localization, patch ranking, and efficiency while addressing data leakage concerns.
Findings
50% Top-5 score improvement over SBFL
49% better Top-1 patch ranking than state-of-the-art ML tools
Entropy effectively complements prior fault localization methods
Abstract
Language models have improved by orders of magnitude with the recent emergence of Transformer-based Large Language Models (LLMs). LLMs have demonstrated their ability to generate natural code that is highly similar to code written by professional developers. One intermediate value an LLM can emit is entropy, which measures the naturalness of a token of code. We hypothesize that entropy can be used to improve the performance of Automated Program Repair (APR) tasks. While much progress has been made in Automated Program Repair (APR), fault localization techniques suffer from a lack of diversity in ranking scores, patch generation tools tend to be inefficient as all tests need to run before determining if a patch is likely to be correct, and patch ranking often suffers from the test-suite over-fitting problem. However, using an LLM directly for APR introduces concerns for training data…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsScientific Computing and Data Management · Parallel Computing and Optimization Techniques · Software Testing and Debugging Techniques
