论文标题
通过增强决策树的基于可变的故障定位
Variable-Based Fault Localization via Enhanced Decision Tree
论文作者
论文摘要
旨在将虫子修复的根本原因定位的故障定位一直是一个长期的研究主题。尽管在过去几十年中已经提出了许多方法,但大多数现有研究都以粗粒的语句或方法水平进行,对如何修复虫子的见解非常有限(粒度问题),但是很少有研究针对细粒度的故障定位。在本文中,我们针对粒度问题,并提出了一种新型的细粒变量级故障定位技术。具体而言,我们设计了一个依赖程序增强的决策树模型,以通过基于变量值区分失败和传递的测试用例来增强错误相关变量的识别。为了评估我们方法的有效性,我们已经在一个名为Vardt的工具中实施了它,并对缺陷4J基准进行了广泛的研究。结果表明,Vardt的表现优于最先进的故障定位方法,其在TOP-1处的错误至少提高了247.8%,平均改善为330.5%。 此外,为了研究我们的细粒度故障定位是否可以进一步提高下游APR技术的有效性,我们已经适应了Vardt的贴剂过滤,其中Vardt的表现超过了最先进的补丁SIM,通过过滤26.0%的不正确贴片。结果证明了我们方法的有效性,它还提供了一种改进自动程序维修技术的新思维方式。
Fault localization, aiming at localizing the root cause of the bug under repair, has been a longstanding research topic. Although many approaches have been proposed in the last decades, most of the existing studies work at coarse-grained statement or method levels with very limited insights about how to repair the bug (granularity problem), but few studies target the finer-grained fault localization. In this paper, we target the granularity problem and propose a novel finer-grained variable-level fault localization technique. Specifically, we design a program-dependency-enhanced decision tree model to boost the identification of fault-relevant variables via discriminating failed and passed test cases based on the variable values. To evaluate the effectiveness of our approach, we have implemented it in a tool called VARDT and conducted an extensive study over the Defects4J benchmark. The results show that VARDT outperforms the state-of-the-art fault localization approaches with at least 247.8% improvements in terms of bugs located at Top-1, and the average improvements are 330.5%. Besides, to investigate whether our finer-grained fault localization result can further improve the effectiveness of downstream APR techniques, we have adapted VARDT to the application of patch filtering, where VARDT outperforms the state-of-the-art PATCH-SIM by filtering 26.0% more incorrect patches. The results demonstrate the effectiveness of our approach and it also provides a new way of thinking for improving automatic program repair techniques.