1.一种软件缺陷预测方法,其特征在于,包括以下步骤:S1:数据收集与处理;
收集和编译Java编程语言开发的软件系统的源代码文件,并将编译后的代码合并为一个统一的JSONL文件;
S2:CodeBERT特征提取,包括以下子步骤:
S21:从JSONL文件中读取每一行数据,分离代码片段和缺陷标签;
S22:对于每个代码片段,进行分词处理,排除注释、空行和库声明信息的影响;
S23:将代码片段输入预训练的CodeBERT模型,获取高维语义特征表示;
S24:将CodeBERT的输出保存在特征矩阵X中,每一行表示一个样本的语义向量表示;
S3:双向门控循环单元BiGRU模型训练和上下文特征学习;
将经过CodeBERT模型处理后得到的高维语义特征表示输入到BiGRU模型中,捕获代码片段的上下文信息;
S4:二分类预测,包括以下子步骤:
S41:将上下文特征输入到Sigmoid激活函数中进行二分类预测;
S42:当Sigmoid输出大于0.5时,判定为存在缺陷;否则,判定为无缺陷。
2.根据权利要求1所述的一种软件缺陷预测方法,其特征在于:S1所述的JSONL文件每一行的格式为:target:"",func:"";其中,target后面的值为0或1,表示该文件是否存在缺陷;func后面的内容为代码片段,即为一个java文件中的代码。
3.根据权利要求2所述的一种软件缺陷预测方法,其特征在于:S2具体包括以下步骤:S21:从S1获得的JSONL文件中,将每一行数据按行解析,将目标与代码片段内容分开,以便后续处理;
S22:对于从"func"字段中提取的每个代码片段,进行分词处理,将其转化为适合CodeBERT模型输入的token序列;在此过程中排除所有注释、空行以及包含库声明信息的token,以降低噪声的影响;
S23:将经过预处理的代码片段输入到预训练的CodeBERT模型中;通过对每个代码片段的token序列进行编码,生成高维度的语义向量表示;
S24:将每个代码片段经过CodeBERT编码后的语义向量保存在一个矩阵中,形成特征矩阵X;矩阵的每一行代表一个样本的语义向量表示,样本数量为N,即数据集中的样本数量;
特征矩阵X将作为输入数据,用于代码缺陷检测任务,为每个代码片段提供语义特征。
4.根据权利要求3所述的一种软件缺陷预测方法,其特征在于:S3具体包括步骤:S31:将特征矩阵X输入到BiGRU模型中;
S32:BiGRU模型通过前向和后向GRU单元,在时序上建模代码片段的语义和上下文;
S33:从BiGRU模型的输出中提取最后一个时间步的隐藏状态作为代码片段的上下文特征表示。
5.根据权利要求4所述的一种软件缺陷预测方法,其特征在于:S4具体包括步骤:S41:将S3中获得的上下文特征输入到一个Sigmoid激活函数中,进行二分类预测;
Sigmoid函数将连续的特征映射到0到1的范围,代表代码片段存在缺陷的概率;具体地,将上下文特征输入到Sigmoid函数中,该函数的输出将表示代码片段存在缺陷的概率;
S42:根据Sigmoid函数的输出,进行判定;如果Sigmoid输出大于0.5,即代码片段存在缺陷的概率大于无缺陷的概率,那么判定为存在缺陷;反之,如果Sigmoid输出小于等于
0.5,即代码片段存在缺陷的概率小于或等于无缺陷的概率,那么判定为无缺陷。
6.一种软件缺陷预测系统,其特征在于:该系统能够用于实施权利要求1至5其中一项所述的软件缺陷预测方法,具体的,包括:数据处理模块:负责对软件源代码进行预处理,包括代码分词、嵌入式表示和标签处理;首先,对代码进行分词,将代码片段拆分为单词或符号;然后,将代码片段转换为嵌入式表示,以捕捉代码的语义信息;最后,处理标签,将软件缺陷的存在与否映射为二进制值;
CodeBERT编码模块:使用预训练的CodeBERT模型对代码片段进行编码;编码流程如下:从JSONL文件中读取每一行数据,分离代码片段和缺陷标签;
对于每个代码片段,进行分词处理,排除注释、空行和库声明信息的影响;
将代码片段输入预训练的CodeBERT模型,获取高维语义特征表示;
将CodeBERT的输出保存在特征矩阵X中,每一行表示一个样本的语义向量表示;
BiGRU模型模块:该模块包含一个BiGRU模型,用于对CodeBERT编码后的向量进行序列学习;BiGRU模型在代码片段的上下文中学习到更准确的特征表示,以提高缺陷预测的准确性;
特征提取模块:负责从BiGRU模型输出的序列中提取特征;使用池化操作或注意力机制来捕捉重要的特征,从而提高模型对缺陷的识别能力;
分类模块:使用一个全连接层或多层感知机(MLP)对提取的特征进行分类;通过训练模型,将输入的代码片段划分为有缺陷或无缺陷的类别;
预测模块:用于输入新的未标记代码片段,利用训练好的模型进行预测,并输出该代码片段是否有缺陷。
7.一种计算机设备,其特征在于:包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至5其中一项所述的软件缺陷预测方法。
8.一种计算机可读存储介质,其特征在于:其上存储有计算机程序,该程序被处理器执行时实现权利要求1至5其中一项所述的软件缺陷预测方法。