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 条
[31]   Comparing Static Bug Finders and Statistical Prediction [J].
Rahman, Foyzur ;
Khatri, Sameer ;
Barr, Earl T. ;
Devanbu, Premkumar .
36TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2014), 2014, :424-434
[32]   On the "Naturalness" of Buggy Code [J].
Ray, Baishakhi ;
Hellendoorn, Vincent ;
Godhane, Saheel ;
Tu, Zhaopeng ;
Bacchelli, Alberto ;
Devanbu, Premkumar .
2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, :428-439
[33]  
Rice Andrew, 2017, OOPSLA
[34]   A comparison of bug finding tools for Java']Java [J].
Rutar, N ;
Almazan, CB ;
Foster, JS .
15TH INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING, PROCEEDINGS, 2004, :245-256
[35]  
Ruthruff JR, 2008, ICSE'08 PROCEEDINGS OF THE THIRTIETH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, P341, DOI 10.1145/1368088.1368135
[36]   Tricorder: Building a Program Analysis Ecosystem [J].
Sadowski, Caitlin ;
van Gogh, Jeffrey ;
Jaspan, Ciera ;
Soderberg, Emma ;
Winter, Collin .
2015 IEEE/ACM 37TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, VOL 1, 2015, :598-608
[37]   Performance Issues and Optimizations in Java']JavaScript: An Empirical Study [J].
Selakovic, Marija ;
Pradel, Michael .
2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, :61-72
[38]   Do Automatically Generated Unit Tests Find Real Faults? An Empirical Study of Effectiveness and Challenges [J].
Shamshiri, Sina ;
Just, Rene ;
Rojas, Jose Miguel ;
Fraser, Gordon ;
McMinn, Phil ;
Arcuri, Andrea .
2015 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE), 2015, :201-211
[39]   To what extent could we detect field defects? An extended empirical study of false negatives in static bug-finding tools [J].
Thung, Ferdian ;
Lucia ;
Lo, David ;
Jiang, Lingxiao ;
Rahman, Foyzur ;
Devanbu, Premkumar T. .
AUTOMATED SOFTWARE ENGINEERING, 2015, 22 (04) :561-602
[40]  
Thung F, 2012, IEEE INT CONF AUTOM, P50, DOI 10.1145/2351676.2351685