[发明专利]一种基于代码表示学习的即时软件缺陷预测方法有效
申请号: | 202010665255.5 | 申请日: | 2020-07-11 |
公开(公告)号: | CN111858323B | 公开(公告)日: | 2021-06-01 |
发明(设计)人: | 祝永滕;刘望舒;刘学军 | 申请(专利权)人: | 南京工业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 田凌涛 |
地址: | 210000 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 代码 表示 学习 即时 软件 缺陷 预测 方法 | ||
1.一种基于代码表示学习的即时软件缺陷预测方法,用于针对对应代码库中各软件源代码的各变更修改,实现代码缺陷预测;其特征在于:包括代码缺陷预测模型构建方法,以及应用代码缺陷预测模型针对待检测变更修改实现缺陷检测;其中,代码缺陷预测模型构建方法包括如下步骤:
步骤A.选择预设数量的各类型代码缺陷、并将已提交至代码库的各个变更修改,作为各个变更修改样本,并分别针对各个变更修改样本,将变更修改样本分解为提交信息与各个代码变更信息,进而获得各变更修改样本分别所对应的提交信息与各个代码变更信息,然后进入步骤B;
步骤B.分别针对各个变更修改样本,针对变更修改样本所对应的提交信息与各个代码变更信息进行编码,获得提交信息与各个代码变更信息分别所对应的单词序列,进而获得各变更修改样本分别所对应的各个单词序列,然后进入步骤C;
步骤C.分别针对各变更修改样本所对应各个单词序列,获得单词序列分别对应单词嵌入处理、段落嵌入处理、位置嵌入处理的各个词向量,即单词序列所对应的三个词向量,进而获得各单词序列分别所对应的三个词向量,然后进入步骤D;
步骤D.应用各单词序列分别所对应的三个词向量,针对Transformer编码器模型进行构建,获得构建好的Transformer编码器模型,然后进入步骤E;
步骤E.基于各个单词序列,针对构建好的Transformer编码器模型执行预训练任务,获得训练好的Transformer编码器模型,并执行预设参数项的设定,即获得代码缺陷预测模型;
基于代码缺陷预测模型的构建,按如下步骤I至步骤III,实现应用代码缺陷预测模型针对待检测变更修改的缺陷检测;
步骤I.针对待检测变更修改执行代码审查,审查通过则进入步骤II,否则判定该待检测变更修改不符合规范;
步骤II.按步骤B至步骤C的方法,针对待检测变更修改所对应的各个单词序列,获得各单词序列分别所对应的三个词向量,然后进入步骤III;
步骤III.应用代码缺陷预测模型接收各单词序列分别所对应的三个词向量,执行针对待检测变更修改的缺陷检测。
2.根据权利要求1所述一种基于代码表示学习的即时软件缺陷预测方法,其特征在于:所述步骤B中,分别针对变更修改样本所对应的提交信息与各个代码变更信息,按如下步骤B1至步骤B2进行编码,获得提交信息与各个代码变更信息分别所对应的单词序列;
步骤B1.应用NLTK工具提取提交信息中的单词序列,并根据预设停止词词库,删除该单词序列中的停止词、以及出现次数未超过预设次数阈值的单词,更新该单词序列,即获得该提交信息所对应的单词序列;
步骤B2.分别针对各个代码变更信息,应用NLTK工具提取代码变更信息中的单词序列,并首先根据预设停止词词库,删除该单词序列中的停止词;接着针对该单词序列中的各数字,应用预设第三标记进行替代;然后根据预设已知代码词词库,针对该单词序列中的未知单词、以及出现次数未超过预设次数阈值的单词,采用预设第四标记进行替代;最后根据该单词序列的功能目的,针对该单词序列的开头添加其功能目的标记,由此更新该单词序列,即获得该代码变更信息所对应的单词序列,进而获得各代码变更信息分别所对应的单词序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京工业大学,未经南京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010665255.5/1.html,转载请声明来源钻瓜专利网。