近日,浙江大学上海高等研究院计算+金融团队研究员、浙大平台百人研究员高志鹏与浙江大学智能计算与软件中心团队最新研究成果“基于弱监督学习的静态分析工具警告消除技术”在第38届软件工程国际会议 ASE 获得Industry Challenge Track杰出论文奖。IEEE/ACM International Conference on Automated Software Engineering (ASE)是计算机软件工程领域国际顶级学术会议,也是CCF A类推荐会议,至今已经成功举办38届。今年该会议在卢森堡举行,吸引了来自全球顶级名校和科研巨头的投稿。2023 ASE Industry Challenge Track发布了包括静态检测工具降误报在内的八个亟待解决的工业界难题,向全球范围内的软件工程研究人员征集解决方案,被采纳的方案可获得5000~10000欧元奖励。
静态分析工具近年来被软件开发人员和公司广泛使用,用于检测潜在的错误。例如Facebook开发的infer是一个静态代码分析工具,用于检查其Android和iOS应用程序(包括Facebook、WhatsApp、Instagram等)中的代码缺陷(如空指针异常、内存泄漏、竞争条件)。由于静态检测工具的轻量级分析和低计算成本,其在开发人员中受到了广泛欢迎。然而,静态分析工具面临两个主要挑战:首先,静态分析工具有很高的误报率(高达90%);其次,开发人员在使用这些工具时常常感到信息过载,这可能导致他们忽视真正的代码缺陷并陷入无关的误报信息中。
为此,现有的研究人员引入了活跃警告(Actionable warning)的概念。具体而言,如果一个警告在一个软件版本中出现,然后在后续软件版本中消失,那么这个警告被称为活跃警告,否则,该警告则被视为误报。然而目前的研究仍然存在两个不足:(1)大多数警告消除算法依赖于专家定制的特征,这在很大程度上依赖于专家设计和专业领域知识;(2)先前的研究主要关注检测活跃警告而忽略了一个重要问题,并非所有的活跃警告都是真实的软件缺陷。
ACWRecommender整体架构
本文构建了一个基于弱监督学习的静态分析工具警告消除模型ACWRecommender,通过弱监督学习的方法对静态检测工具警告进行验证、打分和排序。该方法是一个包括粗粒度检测阶段和细粒度重排阶段的两阶段框架。为了验证模型的可行性,本研究通过对GitHub上排名前500的C语言项目并进行静态分析,收集了包括538个活跃警告和30,590个误报,然后利用语义匹配和结构匹配对每个活跃警告分配了相应的弱标签。在第一阶段利用预训练模型构造了一个检测器,以预测该警告是否是活跃警告,在第二阶段利用弱标签对模型进行微调,优先推荐可能是软件缺陷的活跃警告。本文对两个任务进行了大量实验以验证工具的有效性,在第一阶段活跃警告检测任务中,ACWRecommender的F1-score比其他基线模型提高了91.7%,在第二阶段警告验证排序任务上,ACWRecommender在nDCG和MRR方面表现大幅优于基线模型。 该工作在实际开发场景下对该工具进行了验证,该研究利用ACWRecommender工具向GitHub开发人员推荐了24个活跃警告,其中22个被确认为真实软件缺陷,进一步证明了该方法的实用性。
本项目得到了浙江大学上海高等研究院繁星科学基金、上海市科委启明星扬帆计划等资助。
关于会议
IEEE/ACM International Conference on Automated Software Engineering (ASE)是计算机软件工程领域国际顶级学术会议,也是CCF A类推荐会议,至今已经成功举办38届。今年该会议在卢森堡举行,吸引了来自全球顶级名校和科研巨头的投稿。2023 ASE Industry Challenge Track发布了包括静态检测工具降误报在内的八个亟待解决的工业界难题,向全球范围内的软件工程研究人员征集解决方案,被采纳的方案可获得5000~10000欧元奖励。
关于论文
题目:
ACWRecommender: A Tool for Validating Actionable Warnings with Weak Supervision
作者:
Zhipeng Xue, Zhipeng Gao, Xing Hu, Shanping Li
单位:
浙江大学上海高等研究院 浙江大学计算机学院 浙江大学软件学院
会议:
the 38th IEEE/ACM International Conference on Automated Software Engineering Industry Challenge Track
论文链接:
https://conf.researchr.org/details/ase-2023/ase-2023-industry-challenge/11/ACWRecommender-A-Tool-for-Validating-Actionable-Warnings-with-Weak-Supervision