LOPLSEOct 29, 2018

SMT-Based Refutation of Spurious Bug Reports in the Clang Static Analyzer

arXiv:1810.12041v221 citationsHas Code
Originality Incremental advance
AI Analysis

This addresses the issue of false positives in static analysis for software developers, representing an incremental improvement over existing heuristics.

The paper tackled the problem of spurious bug reports in the Clang Static Analyzer by developing an SMT-based refutation extension, which refuted about 7% of bug reports across 8 out of 12 applications without affecting true bugs and added only 1.2% runtime overhead.

We describe and evaluate a bug refutation extension for the Clang Static Analyzer (CSA) that addresses the limitations of the existing built-in constraint solver. In particular, we complement CSA's existing heuristics that remove spurious bug reports. We encode the path constraints produced by CSA as Satisfiability Modulo Theories (SMT) problems, use SMT solvers to precisely check them for satisfiability, and remove bug reports whose associated path constraints are unsatisfiable. Our refutation extension refutes spurious bug reports in 8 out of 12 widely used open-source applications; on average, it refutes ca. 7% of all bug reports, and never refutes any true bug report. It incurs only negligible performance overheads, and on average adds 1.2% to the runtime of the full Clang/LLVM toolchain. A demonstration is available at {\tt https://www.youtube.com/watch?v=ylW5iRYNsGA}.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes