ChangeGuard: Validating Code Changes via Pairwise Learning-Guided Execution
Lars Gr\"oninger, Beatriz Souza, Michael Pradel

TL;DR
ChangeGuard is a novel learning-guided execution approach that effectively detects semantics-changing code modifications, outperforming traditional regression tests in identifying unintended behavioral changes in complex software projects.
Contribution
The paper introduces pairwise learning-guided execution, a new technique that enhances the robustness and coverage of behavior validation for code changes.
Findings
Detects semantics-changing code with 77.1% precision and 69.5% recall.
Outperforms traditional regression tests, which have only 7.6% recall.
Effective in identifying behavioral changes from automated code transformations.
Abstract
Code changes are an integral part of the software development process. Many code changes are meant to improve the code without changing its functional behavior, e.g., refactorings and performance improvements. Unfortunately, validating whether a code change preserves the behavior is non-trivial, particularly when the code change is performed deep inside a complex project. This paper presents ChangeGuard, an approach that uses learning-guided execution to compare the runtime behavior of a modified function. The approach is enabled by the novel concept of pairwise learning-guided execution and by a set of techniques that improve the robustness and coverage of the state-of-the-art learning-guided execution technique. Our evaluation applies ChangeGuard to a dataset of 224 manually annotated code changes from popular Python open-source projects and to three datasets of code changes obtained…
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
TopicsSoftware Testing and Debugging Techniques · Software Reliability and Analysis Research · Software Engineering Research
