Static bug detection tools help developers detect problems in the code, including bad programming practices and potential defects. However, it is known that static bug detectors remain underutilized due to various reasons. Recent advances to incorporate static bug detectors in modern software development workflows, such as in code review and continuous integration, are shown capable of better motivating developers to fix the reported warnings on the fly. Moreover, tracking the static code warnings will benefit many downstream software engineering tasks, such as learning the fix patterns for automated program repair and learning which warnings are of more interest, so they can be prioritized automatically. Hence, precisely tracking the warnings by static bug detectors is critical to improve the utilization of static bug detectors further. In this paper, we study the effectiveness of the state-of-the-art (SOA) solution in tracking the 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 over 2000 commits in four large-scale open-source systems (i.e., JClouds, Kafka, Spring-boot, and Guava) and crafted a dataset of 3,452 static code warnings by two static bug detectors (i.e., Spotbugs and PMD). We manually uncover the ground-truth evolution status of the static warnings: persistent, resolved, or newly-introduced. Moreover, upon manual analysis, we identified the main reasons behind the insufficiencies of the SOA solution. Finally, we propose a better approach to improving the tracking of static warnings over software development history. Our evaluation shows that our proposed approach provides a significant improvement in terms of the precision of the tracking, i.e., from 66.9% to 90.0%.
翻译:静态代码检测工具有助于开发者发现代码中的问题,包括不良的编程做法和潜在的缺陷。然而,众所周知,由于各种原因,静态错误探测器仍然没有得到充分利用。最近将静态错误探测器纳入现代软件开发工作流程(如代码审查和连续整合)的进展显示,能够更好地激励开发者修正所报道的飞行警告。此外,跟踪静态代码警告将有益于许多下游软件工程任务,例如学习自动程序修复和学习的固定程序修复和学习模式,这些警告更令人感兴趣,因此可以自动排列优先次序。因此,精确跟踪静态错误探测器的警告对于进一步使用静态错误探测器至关重要。在本文件中,我们研究了将静态错误探测器(SOA)解决方案纳入现代软件开发流程(SOA)流程中的静态错误探测器(SOA)的有效性,根据我们对SOA解决方案的不足的分析提出更好的解决方案。我们研究了2000年的四套大型开放源系统(即JClouds、Kafka、Spring-boat、Guava)的警告,并设计了一个更精确的Sta-taro Stampal Stal ad Stal rodeal laveal laveal laveal laxal laveal laveal laveal laveal lax laveal lax lax lax lauts lauts lauts lax lax lauts laut lauts lax lax lax lax lax lax lax lax laut laut laut laut lax lax lax lax lax lax i.