|
ABSTRACT
Neglected conditions are an important but difficult-to-find class of software defects. This paper presents a novel approach to revealing neglected conditions that integrates static program analysis and advanced data mining techniques to discover implicit conditional rules in a code base and to discover rule violations that indicate neglected conditions. The approach requires the user to indicate minimal constraints on the context of the rules to be sought, rather than specific rule templates. To permit this generality, rules are modeled as graph minors of program dependence graphs, and both frequent itemset mining and frequent subgraph mining algorithms are employed to identify candidate rules. We report the results of an empirical evaluation of the approach in which it was used to discover conditional rules and neglected conditions in ~25,000 lines of source code.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Apache.org. Apache HTTP Server Project. www.apache.org.
|
 |
2
|
Timothy A. Budd , Richard A. DeMillo , Richard J. Lipton , Frederick G. Sayward, Theoretical and empirical studies on using program mutation to test the functional correctness of programs, Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.220-233, January 28-30, 1980, Las Vegas, Nevada
[doi> 10.1145/567446.567468]
|
| |
3
|
|
 |
4
|
Benjamin Chelf , Dawson Engler , Seth Hallem, How to write system-specific, static checkers in metal, Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, p.51-60, November 18-19, 2002, Charleston, South Carolina, USA
|
| |
5
|
Chockler, H., Kupferman, O., and Vardi, M. Coverage metrics for formal verification. Lecture Notes in Computer Science 2860, Springer, 2003, pp. 111--125.
|
| |
6
|
|
 |
7
|
Dawson Engler , David Yu Chen , Seth Hallem , Andy Chou , Benjamin Chelf, Bugs as deviant behavior: a general approach to inferring errors in systems code, Proceedings of the eighteenth ACM symposium on Operating systems principles, October 21-24, 2001, Banff, Alberta, Canada
|
| |
8
|
Engler, D. Meta-level compilation. metacomp.stanford.edu.
|
| |
9
|
|
 |
10
|
|
 |
11
|
|
| |
12
|
Festa, P. Study says buffer overflow is most common security bug. C|Net News.com. news.com.com/2100-1001-233483.html.
|
| |
13
|
|
| |
14
|
Grammatech. CodeSurfer. www.grammatech.com/products/codesurfer/overview.html.
|
| |
15
|
Grammatech. Dependence graphs and program slicing. www.grammatech.com/research/slicing/slicingWhitepaper
|
| |
16
|
Holder, L. B., Cook, D. J., and Djoko, S. Substructure discovery in the SUBDUE system. AAAI Workshop on Knowledge Discovery in Databases, 1994, 169--180.
|
| |
17
|
|
| |
18
|
Howden, W. Reliability of the path analysis testing strategy. IEEE Trans. on Softw. Eng., SE-2, Sept. 1976, pp. 208--215.
|
| |
19
|
|
 |
20
|
Jun Huan , Wei Wang , Jan Prins , Jiong Yang, SPIN: mining maximal frequent subgraphs from graph databases, Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining, August 22-25, 2004, Seattle, WA, USA
[doi> 10.1145/1014052.1014123]
|
| |
21
|
IBM. Orthogonal defect classification. Center for Software Eng., www.research.ibm.com/softeng/ODC/ODC.HTM.
|
| |
22
|
|
| |
23
|
Kuramochi, M. and Karypis, G. Finding frequent patterns in a large sparse graph. Technical Report #03-038, Dept. of Computer Sci. and Eng., Univ. of Minnesota.
|
| |
24
|
Kuramochi, M. and Karypis, G. GREW: A Scalable Frequent Subgraph Discovery Algorithm. Technical Report #TR 04-024, CSE Dept., Univ. of Minnesota.
|
 |
25
|
|
| |
26
|
|
 |
27
|
Chao Liu , Chen Chen , Jiawei Han , Philip S. Yu, GPLAG: detection of software plagiarism by program dependence graph analysis, Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining, August 20-23, 2006, Philadelphia, PA, USA
[doi> 10.1145/1150402.1150522]
|
 |
28
|
|
| |
29
|
|
 |
30
|
|
| |
31
|
|
| |
32
|
Mozilla.org. Bugzilla. https://bugzilla.mozilla.org/.
|
| |
33
|
NIST. National Vulnerability Database. http://nvd.nist.gov/.
|
| |
34
|
|
| |
35
|
Renieres, M. and Reiss, S. P. Fault localization with nearest neighbor queries. 18th International Conference on Automated Software Engineering (Oct. 2003), pp. 30--39.
|
| |
36
|
Richardson, D. J. and Clarke, L. A. Partition analysis: a method combining testing and verification. IEEE Trans. on Softw. Eng., SE-11, 12 (Dec. 1985), 1477--1490.
|
| |
37
|
Robertson, N. and Seymour, P. D. Graph Minors. I. Excluding a forest. Journal of Combinatorial Theory, Series B 35 (1), 1983, 39--61.
|
| |
38
|
|
| |
39
|
Thayer, T. A., Lipow, M., and Nelson, E. C. Software reliability study. TRW-SS-76-03, Redondo Beach, California, TRW, March 1976.
|
| |
40
|
|
| |
41
|
Wilander, J. and Fak, P. Rule Matching Security Properties of Code using Dependence Graphs. 1st Intl. Workshop on Code Based Software Security Assessments (Pittsburgh, PA, November 2005).
|
| |
42
|
|
 |
43
|
|
| |
44
|
|
| |
45
|
Zhang, S., Yang, J., and Cheedella, V. Monkey: Approximate Graph Mining Based on Spanning Trees, to appear in ICDE, April 2007, Istanbul, Turkey.
|
 |
46
|
|
|