[发明专利]一种基于Github的软件缺陷检测模型建立、检测方法及系统有效
申请号: | 202010140642.7 | 申请日: | 2020-03-03 |
公开(公告)号: | CN111459799B | 公开(公告)日: | 2023-03-10 |
发明(设计)人: | 柯鑫;叶贵鑫;汤战勇;尹小燕;龚晓庆;房鼎益 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 李婷;金艳婷 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 github 软件 缺陷 检测 模型 建立 方法 系统 | ||
1.一种基于Github的软件缺陷检测模型建立方法,其特征在于,包括以下步骤:
步骤1,数据预处理:
对Github中的仓库进行排序,选取排名靠前的仓库作为源数据集,对源数据集中的每个仓库的变更记录进行筛选和去重,得到符合要求的变更记录及其对应的Bug-Fix文件对;
所述Bug-Fix文件对是指修改前的文件Bug file和修改后的文件Fixed file;
步骤2,对步骤1得到的符合要求的变更记录及其对应的Bug-Fix文件对进行处理,生成切片的向量及标签:
步骤2.1,对步骤1得到的符合要求的变更记录的Bug-Fix文件对进行解析和比对,获得每个变更记录对应的增加和删除的代码行信息;
步骤2.2,根据步骤2.1获得的增加和删除的代码行信息及其Bug-Fix文件对的数据流,确定每一个变更记录导致缺陷的缺陷代码行;
步骤2.3,根据步骤1得到的符合要求的变更记录的Bug-Fix文件对的数据流和控制流信息,生成Bug-Fix文件对的切片;
步骤2.4,根据步骤2.2确定的缺陷代码行,对步骤2.3得到的Bug-Fix文件对的切片添加标签;
步骤2.5,对步骤2.3得到的Bug-Fix文件对的切片逐个进行变量名替换,替换为一个统一的令牌;
步骤2.6,对步骤2.5替换过变量名的切片逐个进行分词处理,每个切片得到一个令牌序列;
步骤2.7,将步骤2.6得到的每一个令牌序列转化为向量;
步骤3,模型训练:
将步骤2得到的切片的向量及标签输入到双向LSTM模型中进行训练和学习,得到训练好的检测模型。
2.如权利要求1所述的基于Github的软件缺陷检测模型建立方法,其特征在于,所述的步骤1具体包括:
步骤1.1,对Github中的仓库按照仓库的影响因子fork由大到小进行排序,选取排名前30%~35%的仓库作为源数据集;
步骤1.2,采用关键字搜索方法对源数据集中的每个仓库的变更记录进行筛选,得到具有不同缺陷类型的变更记录;
步骤1.3,过滤掉步骤1.2得到的具有不同缺陷类型的变更记录中不符合动词/直接宾语模式的变更记录;
步骤1.4,采用TextRank技术对步骤1.3得到的变更记录进行再筛选,剔除掉混合型变更记录;
所述TextRank技术是指TextRank算法,采用TextRank技术对步骤1.3得到的变更记录进行筛选的具体方法是:将步骤1.3得到的变更记录输入到TextRank算法中,抽取出来的关键词前五中如果包含步骤1.2中涉及到的关键词,认为这一条变更记录是符合要求的,进入步骤1.5,否则删除;
步骤1.5,对步骤1.4得到的变更记录进行去重,得到符合要求的变更记录及其对应的Bug-Fix文件对。
3.如权利要求1所述的基于Github的软件缺陷检测模型建立方法,其特征在于,所述的步骤2.4中,在添加标签过程中,包含缺陷代码行的切片标记为0,不包含缺陷代码行的切片标记为1。
4.如权利要求1所述的基于Github的软件缺陷检测模型建立方法,其特征在于,所述的步骤2.7中,使用word2vec工具将每一个令牌序列转化为向量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010140642.7/1.html,转载请声明来源钻瓜专利网。