This paper proposes a new approach to statistical fault localization that integrates information about both predicate outcomes and variable values, and that does so in a principled way that controls for confounding bias. The key to this approach, which we call UniVal, is to transform the program under analysis so that branch and loop predicate outcomes become variable values, so that one causally sound value-based SFL technique can be applied to both variable assignments and predicates. This paper reports on an large-scale empirical evaluation of UniVal involving the latest version (2.0.0) of the widely used Defects4J evaluation framework [1]}, which contains seventeen software projects and 835 program versions containing actual faults. In this study, UniVal was compared to several coverage-based, predicate-based, and value-based SFL techniques. UniVal substantially out-performed each of these techniques. To the best our knowledge this is the only fault localization study that has used all the programs in the latest version of Defects4J, and it uses the largest number of real programs and faults of any study. We also report empirical results characterizing the relationship between the cost of fault localization and an important property of data in a causal inference study called covariate balance. These results help explain the effectiveness of UniVal.
