Finding latent code errors via machine learning over program executions
By Yuriy Brun, Michael D. Ernst. 2004
197 citations recorded by the source corpus.
This paper proposes a technique for identifying program properties that indicate errors. The technique generates machine learning models of program properties known to result from errors, and applies these models to program properties of user-written code to classify and rank properties that may lead the user to errors. Given a set of properties produced by the program analysis, the technique selects a subset of properties that are most likely to reveal an error. An implementation, the fault invariant classifier, demonstrates the efficacy of the technique. The implementation uses dynamic invariant detection to generate program properties. It uses support vector machine and decision tree learning tools to classify those properties. In our experimental evaluation, the technique increases the relevance (the concentration of fault-revealing properties) by a factor of 50 on average for the C programs, and 4.8 for the Java programs. Preliminary experience suggests that most of the fault-revealing properties do lead a programmer to an error.
Subfields: Information Systems, Software, Signal Processing
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Information Systems
- Xifeng Yan
- Jiawei Han
- Rui Abreu
- Swarat Chaudhuri
- Chao Liu
- Navid Yaghmazadeh
- Işıl Dillig
- Michael D. Ernst
In Software
- Rui Abreu
- Swarat Chaudhuri
- Navid Yaghmazadeh
- Yihao Li
- Ruizhi Gao
- W. E. Wong
- David R. Cok
- Joseph R. Kiniry
In Signal Processing
- Jiawei Han
- Xifeng Yan
- David R. Cok
- Joseph R. Kiniry
- Samuel P. Midkiff
- Long Fei
- Chao Liu
- Stuart J. Russell
Citations in the corpus
- Research Priorities for Robust and Beneficial Artificial Intelligence (2015, methodology): “These techniques could be applied to the detection of intrusions [43], analyzing malware [44], or detecting potential exploits in other programs through code analysis [45].”
- Learning to rank relevant files for bug reports using domain knowledge (2014, background): “Other approaches [8, 42] analyze dynamic properties of programs such as code changes in order to infer causes of failures.”
- Classifying Software Changes: Clean or Buggy? (2008, unknown): “Brun and Ernst [5] use two classification algorithms to find hidden code errors.”
- A Survey on Software Fault Localization (2016, background): “Daikon Dynamic invariant detector open source [58], [107]”
- SOBER: statistical model-based bug localization (2005, methodology): “Recent studies also show that program invariants can be used to find latent errors [2] and to warn about unsafe upgrades [16], to name just a few.”
- Statistical Debugging: A Hypothesis Testing-Based Approach (2006, methodology): “Within dynamic analyses, techniques based on predicate evaluations have been shown to be promising for fault localization [13], [14], [7], [12].”
- Synthesizing transformations on hierarchically structured data (2016, background): “They have also found applications in program analysis, for example in precondition learning for procedures [31], identification of latent code errors [8], and repair of programs that manipulate relational databases [14].”
- An overview of JML tools and applications (2003, methodology): “In addition to aiding the task of static checking as described above, operational abstractions generated by the Daikon invariant detector have been used to generate and improve test suites [44,93,40], automate theoremproving [78,79], identify refactoring opportunities [53], aid program analysis [29,”
- The Daikon system for dynamic detection of likely invariants (2007, background): “Brun uses machine learning over correct and faulty programs to predict what properties in a different program are most likely to indicate latent errors [20].”