Is There A “Golden” Feature Set for Static Warning Identification?
背景:关于使用静态分析工具(例如 FindBugs)的最重要挑战是存在大量开发人员未采取行动的警告。已经提出了许多功能来构建分类模型,以自动识别可操作的警告。通过分析这些功能和相关研究,我们观察到一些限制,使用户缺乏应用这些功能的实用指南。
目的:这项工作旨在对所有公共可用特征进行系统的实验评估,并探索是否存在用于可操作警告识别的黄金特征集。方法:我们首先进行系统的文献回顾,收集所有公共可用的特征用于警告识别。我们采用 12 个项目,共 60 次修订作为我们的主题项目。然后,我们实施一个工具来提取每个项目修订的所有特征的值,以准备实验数据。
结果:对收集到的 116 个特征的实验评估表明,有一组共同的特征(23 个特征)在大多数项目修订的警告识别中起作用。这些特征可以在警告识别的时间成本低得多的情况下实现令人满意的性能。
结论:这些常用的特征可以被视为识别可操作警告的黄金特征集。这一发现可以作为促进现实世界警告识别的实用指南。
Learning Probabilistic Models for Static Analysis Alarms
我们提出了 BayeSmith,一个用于自动学习静态分析警报概率模型的通用框架。最近提出了几种概率推理技术,它们结合了对语义事实的外部反馈,从而减少了用户的警报检查负担。然而,这些方法基本上仅限于具有预定义结构的模型,因此无法学习或将有关分析的知识从一个程序转移到另一个程序。此外,这些概率模型通常会积极地从外部反馈中泛化并错误地抑制真正的错误。为了解决这些问题,我们提出了学习概率模型的结构和权重的 BayeSmith。 BayeSmith 从一个初始模型和一组带有错误标签的训练程序开始,改进了模型,以根据反馈有效地优先考虑真正的错误。我们通过对一组 C 程序的两个静态分析来评估该方法。我们证明了学习模型显着提高了三个最先进的概率推理系统的性能。
Detecting False Alarms from Automatic Static Analysis Tools: How Far are We?
Findbugs 等自动静态分析工具 (ASAT) 的误报率很高。产生的大量误报构成了采用的障碍。研究人员建议使用机器学习来消除误报,并仅向开发人员提供可操作的警告。最先进的研究已经根据对文件、代码和警告的特征和历史计算的指标确定了一组“黄金特征”。最近的研究表明,使用这些特征的机器学习非常有效,并且它们达到了几乎完美的性能。
我们进行了详细的分析,以更好地了解“黄金特征”的强劲表现。我们发现,一些研究使用了导致数据泄漏和数据重复的实验程序,这些都是具有重大影响的微妙问题。首先,ground-truth 标签已经泄露到特征中,这些特征衡量了给定上下文中可操作警告的比例。其次,测试数据集中的许多警告出现在训练数据集中。接下来,我们展示了确定真实标签的警告预言的局限性,这是一种将给定修订版中的警告与未来参考修订版进行比较的启发式方法。我们展示了参考修订的选择会影响警告分布。此外,启发式产生的标签与人类预言不符。因此,如果在实践中采用,以前看到的这些技术的强大性能对其真实性能过于乐观。我们的结果传达了几个教训,并为评估误报检测器提供了指导。