We introduce Causal Program Dependence Analysis (CPDA), a dynamic dependence analysis that applies causal inference to model the strength of program dependence relations in a continuous space. CPDA observes the association between program elements by constructing and executing modified versions of a program. One advantage of CPDA is that this construction requires only light-weight parsing rather than sophisticated static analysis. The result is a collection of observations based on how often a change in the value produced by a mutated program element affects the behavior of other elements. From this set of observations, CPDA discovers a causal structure capturing the causal (i.e., dependence) relation between program elements. Qualitative evaluation finds that CPDA concisely expresses key dependence relationships between program elements. As an example application, we apply CPDA to the problem of fault localization. Using minimal test suites, our approach can rank twice as many faults compared to SBFL.
翻译:我们引入了因果方案依赖性分析(CPDA),这是一个动态依赖性分析(CPDA),该分析运用因果推论来模拟连续空间中方案依赖关系的力量。CPDA通过建造和执行程序修改版本来观察方案各组成部分之间的联系。CPDA的一个优点是,这一构建只需要轻量分解,而不是复杂的静态分析。结果根据变异方案要素产生的价值变化如何频繁影响其他要素的行为,收集了各种观察结果。从这一组观察中,CPDA发现了一种因果结构,其中反映了方案各组成部分之间的因果(即依赖性)关系。定性评价发现,CPDA简明地表达了方案各组成部分之间的关键依赖性关系。举例来说,我们应用CPDA来应对差分化问题。使用最小的测试套件,我们的方法可以排成比SBFL的错误两倍。