[发明专利]一种基于字节码和神经网络的代码克隆检测方法及系统在审
申请号: | 202111400977.9 | 申请日: | 2021-11-19 |
公开(公告)号: | CN114064117A | 公开(公告)日: | 2022-02-18 |
发明(设计)人: | 万邦睿;董双;黄江平;钱鹰 | 申请(专利权)人: | 重庆邮电大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06K9/62;G06N3/08 |
代理公司: | 重庆辉腾律师事务所 50215 | 代理人: | 卢胜斌 |
地址: | 400065 重*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 字节 神经网络 代码 克隆 检测 方法 系统 | ||
1.一种基于字节码和神经网络的代码克隆检测方法,其特征在于,包括:获取待检测的代码数据,将待检测的代码数据输入到训练好的代码克隆检测模型中,得到检测结果,将检测结果进行标记保存;
对代码克隆检测模型进行训练的过程包括:
S1:获取原始的代码数据集;对代码数据进行预处理,得到格式化后的数据集;
S2:对格式化后的数据集进行划分,得到训练集、验证集和测试集;
S3:将训练集中的数据进行特征提取,得到代码数据的特征,将代码数据特征进行集合,得到矩阵对集合;
S4:将矩阵对集合输入到神经网络中,得到检测结果;
S5:根据计算得到的结果计算模型的损失函数值,将验证集中的数据输入到模型中,不断调整模型的参数,当损失函数最小时,完成模型的训练;
S6:将测试集输入到训练好的代码克隆检测模型中,对模型进行评估。
2.根据权利要求1所述的一种基于字节码和神经网络的代码克隆检测方法,其特征在于,对代码数据进行预处理的过程包括:对原始的代码数据进行清洗,删除冗余数据;将清洗后的数据进行格式转化,得到格式化后的数据集;格式化后数据集中的每条数据包含字节码指令序列对和分类标签。
3.根据权利要求1所述的一种基于字节码和神经网络的代码克隆检测方法,其特征在于,将训练集中的数据进行特征提取的过程包括:
步骤1:建立字节码词向量语料库;
步骤2:构建自定义词向量模型,将字节码词向量语料库输入到自定义词向量模型中进行训练,得到训练后的词向量模型;
步骤3:将字节码指令序列对输入到训练后的词向量模型中,得到矩阵对集合。
4.根据权利要求3所述的一种基于字节码和神经网络的代码克隆检测方法,其特征在于,建立字节码词向量语料库的过程包括:
步骤11:选定代码库;
步骤12:对选定的代码库进行编译,得到class文件库;
步骤13:将class文件库转化为字节码指令文件库;
步骤14:提取每个字节码指令文件中所有函数的操作码序列作为词向量训练语料库,其中每个函数的操作码序列作为一条训练数据。
5.根据权利要求3所述的一种基于字节码和神经网络的代码克隆检测方法,其特征在于,对自定义词向量模型进行训练的过程包括:
步骤21:构建词向量模型;
步骤22:设置词向量模型的关键参数;该关键参数包括训练的次数,向量形状以及滑动窗口尺寸;
步骤23:根据设置的关键参数和字节码词向量语料库对词向量模型进行训练,得到训练好的词向量模型。
6.根据权利要求1所述的一种基于字节码和神经网络的代码克隆检测方法,其特征在于,采用神经网络对矩阵对集合进行处理的过程包括:将矩阵对集合中的矩阵对输入到神经网络中,通过正向传播,得到预测值。
7.根据权利要求1所述的一种基于字节码和神经网络的代码克隆检测方法,其特征在于,模型的损失函数表达式为:
其中,N代表数据总量,yi表示第i个数据的实际值,表示第i个数据的预测值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆邮电大学,未经重庆邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111400977.9/1.html,转载请声明来源钻瓜专利网。