学习识别可操作静态代码警告(本质上是容易的)
软件工程
2021-01-12 v3
摘要
静态代码警告工具常生成被程序员忽略的警告。通过选择“可操作”警告(即通常不被忽略的警告)的数据挖掘算法,可使此类工具更有用。本文中,我们在来自FindBugs的31,058条静态代码警告中的5,675条可操作警告样本内寻找可操作警告。我们发现数据挖掘算法能以惊人地容易程度找到可操作警告。具体而言,一系列数据挖掘方法(深度学习者、随机森林、决策树学习器与支持向量机)均取得极好结果(召回率与AUC (TRN, TPR)度量通常超过95%,误报通常低于5%)。鉴于所有这些学习器都如此轻易成功,有必要追问该任务是否存在某些本质容易之处。我们报告,虽然我们的数据集有多达58个原始特征,但这些特征可由少于两个潜在维度近似。对于此类本质简单的数据,许多不同种类的学习器都能生成性能相近的有用模型。基于上述,我们得出结论:由于底层数据本质简单,使用广泛学习算法学习识别可操作静态代码警告是容易的。若必须为此任务挑选某一特定学习器,我们建议线性SVM(至少在我们的样本中该学习器运行相对快且取得最佳中位性能),而不推荐深度学习(因该数据本质非常简单)。
引用
@article{arxiv.2006.00444,
title = {Learning to Recognize Actionable Static Code Warnings (is Intrinsically Easy)},
author = {Xueqi Yang and Jianfeng Chen and Rahul Yedida and Zhe Yu and Tim Menzies},
journal= {arXiv preprint arXiv:2006.00444},
year = {2021}
}
备注
24 pages, 5 figures, 7 tables, accepted to Empirical Software Engineering and to appear