DocumentCode :
3472168
Title :
Evaluating Bug Finders -- Test and Measurement of Static Code Analyzers
Author :
Delaitre, Aurelien ; Stivalet, Bertrand ; Fong, Elizabeth ; Okun, Vadim
Author_Institution :
Dept. of Comput. Sci. & Electr. Eng., West Virginia Univ., Morgantown, WV, USA
fYear :
2015
fDate :
23-23 May 2015
Firstpage :
14
Lastpage :
20
Abstract :
Software static analysis is one of many options for finding bugs in software. Like compilers, static analyzers take a program as input. This paper covers tools that examine source code - without executing it - and output bug reports. Static analysis is a complex and generally undecidable problem. Most tools resort to approximation to overcome these obstacles and it sometimes leads to incorrect results. Therefore, tool effectiveness needs to be evaluated. Several characteristics of the tools should be examined. First, what types of bugs can they find? Second, what proportion of bugs do they report? Third, what percentage of findings is correct? These questions can be answered by one or more metrics. But to calculate these, we need test cases having certain characteristics: statistical significance, ground truth, and relevance. Test cases with all three attributes are out of reach, but we can use combinations of only two to calculate the metrics. The results in this paper were collected during Static Analysis Tool Exposition (SATE) V, where participants ran 14 static analyzers on the test sets we provided and submitted their reports to us for analysis. Tools had considerably different support for most bug classes. Some tools discovered significantly more bugs than others or generated mostly accurate warnings, while others reported wrong findings more frequently. Using the metrics, an evaluator can compare candidates and select the tool that aligns best with his or her objectives. In addition, our results confirm that the bugs most commonly found by tools are among the most common and important bugs in software. We also observed that code complexity is a major hindrance for static analyzers and detailed which code constructs tools handle well and which impede their analysis.
Keywords :
program debugging; program diagnostics; program testing; SATE V; bug finder evaluation; code complexity; ground truth; software static analysis; static analysis tool exposition V; static code analyzer measurement; static code analyzer testing; statistical significance; Complexity theory; Computer bugs; Java; Measurement; NIST; Production; Software; software assurance; software faults; software vulnerability; static analysis tools;
fLanguage :
English
Publisher :
ieee
Conference_Titel :
Complex Faults and Failures in Large Software Systems (COUFLESS), 2015 IEEE/ACM 1st International Workshop on
Conference_Location :
Florence
Type :
conf
DOI :
10.1109/COUFLESS.2015.10
Filename :
7181477
Link To Document :
بازگشت