  Static bug detection tools help developers detect code problems. However, it
is known that they remain underutilized due to various reasons. Recent advances
to incorporate static bug detectors in modern software development workflows
can better motivate developers to fix the reported warnings on the fly.
  In this paper, we study the effectiveness of the state-of-the-art (SOA)
solution in tracking warnings by static bug detectors and propose a better
solution based on our analysis of the insufficiencies of the SOA solution. In
particular, we examined four large-scale open-source systems and crafted a data
set of 3,452 static code warnings by two static bug detectors. We manually
uncover the ground-truth evolution status of the selected warnings: persistent,
resolved, or newly-introduced. Moreover, upon manual analysis, we identified
the critical reasons behind the insufficiencies of the SOA matching algorithm.
Finally, we propose a better approach to improve the tracking of static
warnings over software development history. Our evaluation shows that our
proposed approach provides a significant improvement in the precision of the
tracking, i.e., from 66.9% to 90.0%.
