How Many of All Bugs Do We Find? A Study of Static Bug Detectors

被引:68
作者
Habib, Andrew [1 ]
Pradel, Michael [1 ]
机构
[1] Tech Univ Darmstadt, Dept Comp Sci, Darmstadt, Germany
来源
PROCEEDINGS OF THE 2018 33RD IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMTED SOFTWARE ENGINEERING (ASE' 18) | 2018年
关键词
static bug checkers; bug finding; static analysis; Defects4J;
D O I
10.1145/3238147.3238213
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Static bug detectors are becoming increasingly popular and are widely used by professional software developers. While most work on bug detectors focuses on whether they find bugs at all, and on how many false positives they report in addition to legitimate warnings, the inverse question is often neglected: How many of all real-world bugs do static bug detectors find? This paper addresses this question by studying the results of applying three widely used static bug detectors to an extended version of the Defects4J dataset that consists of 15 Java projects with 594 known bugs. To decide which of these bugs the tools detect, we use a novel methodology that combines an automatic analysis of warnings and bugs with a manual validation of each candidate of a detected bug. The results of the study show that: (i) static bug detectors find a non-negligible amount of all bugs, (ii) different tools are mostly complementary to each other, and (iii) current bug detectors miss the large majority of the studied bugs. A detailed analysis of bugs missed by the static detectors shows that some bugs could have been found by variants of the existing detectors, while others are domain-specific problems that do not match any existing bug pattern. These findings help potential users of such tools to assess their utility, motivate and outline directions for future work on static bug detection, and provide a basis for future comparisons of static bug detection with other bug finding techniques, such as manual and automated testing.
引用
收藏
页码:317 / 328
页数:12
相关论文
共 46 条
[1]  
Aftandilian E., 2012, 2012 12th IEEE Working Conference on Source Code Analysis and Manipulation (SCAM 2012), P14, DOI 10.1109/SCAM.2012.28
[2]   An Industrial Evaluation of Unit Test Generation: Finding Real Faults in a Financial Application [J].
Almasi, M. Moein ;
Hemmati, Hadi ;
Fraser, Gordon ;
Arcuri, Andrea ;
Benefelds, Janis .
2017 IEEE/ACM 39TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING: SOFTWARE ENGINEERING IN PRACTICE TRACK (ICSE-SEIP 2017), 2017, :263-272
[3]  
Ayewah N., 2010, P 19 INT S SOFTW TES, P241
[4]   Using static analysis to find bugs [J].
Ayewah, Nathaniel ;
Pugh, William ;
Hovemeyer, David ;
Morgenthaler, J. David ;
Penix, John .
IEEE SOFTWARE, 2008, 25 (05) :22-29
[5]   A Few Billion Lines of Code Later Using Static Analysis to Find Bugs in the Real World [J].
Bessey, Al ;
Block, Ken ;
Chelf, Ben ;
Chou, Andy ;
Fulton, Bryan ;
Hallem, Seth ;
Henri-Gros, Charles ;
Kamsky, Asya ;
McPeak, Scott ;
Engler, Dawson .
COMMUNICATIONS OF THE ACM, 2010, 53 (02) :66-75
[6]   Finding and Preventing Bugs in Java']JavaScript Bindings [J].
Brown, Fraser ;
Narayan, Shravan ;
Wahby, Riad S. ;
Engler, Dawson ;
Jhala, Ranjit ;
Stefan, Deian .
2017 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP), 2017, :559-578
[7]   Moving Fast with Software Verification [J].
Calcagno, Cristiano ;
Distefano, Dino ;
Dubreil, Jeremy ;
Gabi, Dominik ;
Hooimeijer, Pieter ;
Luca, Martino ;
O'Hearn, Peter ;
Papakonstantinou, Irene ;
Purbrick, Jim ;
Rodriguez, Dulma .
NASA FORMAL METHODS (NFM 2015), 2015, 9058 :3-11
[8]  
Chou Andy, 2001, P 18 ACM S OP SYST P, P73, DOI [10.1145/502034.502042, DOI 10.1145/502034.502042]
[9]  
Engler D., 2001, Operating Systems Review, V35, P57, DOI 10.1145/502059.502041
[10]  
Hovemeyer David., 2004, ACM Conference on Object-Oriented Programming Systems, Lan-guages, and Applications, OOPSLA '04, P132