基于序列的程序语义规则挖掘与违规检测方法
Sequence-based Program Semantic Rule Mining and Violation Detection作者机构:南京航空航天大学计算机科学与技术学院南京210016 高安全系统的软件开发与验证技术工信部重点实验室南京211100
出 版 物:《计算机科学》 (Computer Science)
年 卷 期:2024年第51卷第6期
页 面:78-84页
学科分类:081203[工学-计算机应用技术] 08[工学] 0835[工学-软件工程] 0812[工学-计算机科学与技术(可授工学、理学学位)]
基 金:国家自然科学基金(61972197) 国防基础科研项目(JCKY2022605C006) 江苏省自然科学基金(BK20201292)
摘 要:在软件开发中,违反语义规则的源码可以正常地编译或运行,但却存在性能或功能上的缺陷。因此,如何准确地检测此类缺陷成为了一项挑战。已有的研究通常采用基于项集的规则挖掘与检测方法,但由于未能良好地结合源码的顺序信息与控制流信息,此类方法在检测能力以及准确率上都存在较大的提升空间。针对该问题,提出了一种基于序列的程序语义规则提取与违规检测方法SPUME。该方法将程序源码转化为中间表示序列,使用序列规则挖掘算法从中提取语义规则,并基于语义规则对源码中的缺陷进行检测。为验证SPUME的有效性,文中将其与3种基线方法进行了对比,包括PR-Miner,Tikanga以及Bugram。实验结果表明,相较于基于无序项集进行规则挖掘的PR-Miner,以及结合了图模型的Tikanga,SPUME在检测效果、检测速度以及准确率上都有显著提升。相比基于Ngram语言模型的Bugram方法,SPUME在准确率与其相当的情况下,高效地检测出了更多程序缺陷。