Residual Investigation: Predictive and Precise Bug Detection Kaituo Li, Christoph Csallner Yannis Smaragdakis ∗ Department of Computer Dept. of Informatics, Christoph Reichenbach Science and Engineering U. of Athens Computer Science Dept. University of Texas at Athens 15784, Greece University of Massachusetts Arlington, and Comp. Sci., Amherst, MA 01003, USA
[email protected], Arlington, TX 76019, USA U. Massachusetts
[email protected] Amherst, MA 01003, USA
[email protected] [email protected] ABSTRACT 1. INTRODUCTION AND MOTIVATION We introduce the concept of “residual investigation” for program False error reports are the bane of automatic bug detection—this analysis. A residual investigation is a dynamic check installed as a experience is perhaps the most often-reported in the program anal- result of running a static analysis that reports a possible program er- ysis research literature [1, 21, 22, 27, 28]. Programmers are quickly ror. The purpose is to observe conditions that indicate whether the frustrated and much less likely to trust an automatic tool if they statically predicted program fault is likely to be realizable and rel- observe that reported errors are often not real errors, or are largely evant. The key feature of a residual investigation is that it has to be irrelevant in the given context. This is in contrast to error detection much more precise (i.e., with fewer false warnings) than the static at early stages of program development, where guarantees of de- analysis alone, yet significantly more general (i.e., reporting more tecting all errors of a certain class (e.g., type soundness guarantees) errors) than the dynamic tests in the program’s test suite pertinent are desirable.