Mining Fix Patterns for FindBugs Violations
arXiv:1712.03201
Abstract
In this paper, we first collect and track a large number of fixed and unfixed violations across revisions of software. The empirical analyses reveal that there are discrepancies in the distributions of violations that are detected and those that are fixed, in terms of occurrences, spread and categories, which can provide insights into prioritizing violations. To automatically identify patterns in violations and their fixes, we propose an approach that utilizes convolutional neural networks to learn features and clustering to regroup similar instances. We then evaluate the usefulness of the identified fix patterns by applying them to unfixed violations. The results show that developers will accept and merge a majority (69/116) of fixes generated from the inferred fix patterns. It is also noteworthy that the yielded patterns are applicable to four real bugs in the Defects4J major benchmark for software testing and automated repair.
Accepted for IEEE Transactions on Software Engineering
References in corpus (6)
- ADADELTA: An Adaptive Learning Rate Method
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- Automatic Repair of Real Bugs in Java: A Large-Scale Experiment on the Defects4J Dataset
- Learning Quick Fixes from Code Repositories
- Cross-Language Learning for Program Classification using Bilateral Tree-Based Convolutional Neural Networks
- Harvesting Fix Hints in the History of Bugs