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