摘要
Findbugs 等自动静态分析工具 (ASAT) 的误报率很高。产生的大量误报构成了采用的障碍。研究人员建议使用机器学习来消除误报,并仅向开发人员提供可操作的警告。最先进的研究已经根据对文件、代码和警告的特征和历史计算的指标确定了一组“黄金特征”。最近的研究表明,使用这些特征的机器学习非常有效,并且它们达到了几乎完美的性能。
我们进行了详细分析,以更好地了解“黄金特征”的强劲表现。我们发现,一些研究使用了导致数据泄漏和数据重复的实验程序,这些都是具有重大影响的微妙问题。首先,ground-truth 标签已经泄露到特征中,这些特征衡量了给定上下文中可操作警告的比例。其次,测试数据集中的许多警告出现在训练数据集中。接下来,我们展示了确定真实标签的警告预言的局限性,这是一种将给定修订版中的警告与未来参考修订版进行比较的启发式方法。我们展示了参考修订的选择会影响警告分布。此外,启发式产生的标签与人类预言不符。因此,如果在实践中采用,以前看到的这些技术的强大性能对其真实性能过于乐观。我们的结果传达了几个教训,并为评估误报检测器提供了指导。
关键词:静态分析、误报、数据泄露、数据重复