(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210445965.6 (22)申请日 2022.04.26 (71)申请人 南通大学 地址 226000 江苏省南 通市崇川区啬园路9 号 (72)发明人 文万志 张瑞年 祁佳篁 沈陈强  陆晓虹 宋梦婷 尹思文 程学云  (74)专利代理 机构 南通一恒专利商标代理事务 所(普通合伙) 32553 专利代理师 梁金娟 (51)Int.Cl. G06F 11/36(2006.01) G06K 9/62(2022.01) G06N 3/04(2006.01) G06F 40/30(2020.01) (54)发明名称 基于代码语义融合传统度量元的软件缺陷 预测方法 (57)摘要 本发明属于软件缺陷预测的技术领域, 提供 一种基于代码语义融合传统度量元的软件缺陷 预测方法, 包括如下步骤: S1、 获取项目传统度量 元; S2、 构建项目代码实例向量集PCIVS; S3、 构建 语义提取器SEM; S4、 生成语义向量集 GSVS; S5、 构 建语义融合器SCM; S6、 生成组合语义向量集 CSVS; S7、 构建缺陷预测 分类模型; S8、 构建基于 代码语义融合传统度量元的软件缺陷预测方法 MSFDP。 本发明使用特征提取器提取代码中潜在 的语义信息, 并融合人工提取的传统度量元, 使 用组合的语义向量表示构建缺陷预测分类模型, 弥补使用传统度量元建立预测模 型方法的不足, 提高软件使用的稳定性, 进一步帮助开发人员及 早的发现软件缺陷, 优化测试资源分配 。 权利要求书3页 说明书7页 附图2页 CN 114968764 A 2022.08.30 CN 114968764 A 1.一种基于代码语义融合传统度量元的软件缺陷预测方法, 其特征在于, 包括如下步 骤: S1、 获取项目传统度量元; S2、 构建项目代码实例向量 集PCIVS; S3、 构建语义 提取器SE M; S4、 生成语义向量 集GSVS; S5、 构建语义融合器SC M; S6、 生成组合语义向量 集CSVS; S7、 构建缺陷预测分类模型; S8、 构建基于代码语义融合传统度量元的软件缺陷预测方法MSFD P。 2.根据权利要求1所述的基于代码语义融合传统度量元的软件缺陷预测方法, 其特征 在于, 步骤S1包括如下步骤: S1.1、 基于开源网站获取 软件项目集 合; S1.2、 以项目类作为实例构建项目实例集 合; S1.3、 基于开源数据历史记录、 项目源代码语法结构、 源代码抽象语法树构建特征集 {WMC, DIT, NOC, CBO, RFC, LCOM, LCOM3, NPM, DAM, MOA, MFA, CAM, IC, CBM, AMC, Ca, Ce, Max_CC, Avg_CC, LOC}, 其中, WMC代表每个类的加权方法, DIT代表继承树的深度, NOC代表子类的数 目, CBO代表对象类之间的耦合, RFC代表一个类的响应, LCOM和LCOM3代表在方法上缺少的 凝聚力, NPM代表公共类的个数, DAM代表数据访问指标, MOA代表聚合的量度, MFA代表功能 抽象的量度, CAM代表类方法之间的聚合, IC代表继承耦合, CBM代表方法之间的耦合, AMC代 表平均方法复杂度, Ca代表传入耦合, Ce代表传出耦合, Max_CC代表McCabe圈复杂性的最大 值, Avg_C C代表McCabe圈复杂性的平均值, LOC代 表代码的行 数; S1.4、 将源项目中的第一个实例按步骤S1.3处 理得到tradition_src1; S1.5、 将源项目中的所有实例按照步骤S1.4处 理; S1.6、 构建源项目传统度量元向量集SPTMVS=[tradition_src1,tradition_src2,…, tradition_srci]; 其中, i =1,2,3, …,n; S1.7、 将目标项目中的第一个实例按步骤S1.3处 理得到tradition_tar1; S1.8、 将目标项目中的所有实例按照步骤S1.7处 理; S1.9、 构建目标项目传统度量元向量集TPTMVS=[tradition_tar1,tradition_ tar2,…,tradition_tarj]; 其中, j=1,2,3, …,m。 3.根据权利要求1所述的基于代码语义融合传统度量元的软件缺陷预测方法, 其特征 在于, 步骤S2包括如下步骤: S2.1、 将代码按照预定的规则分割 成一个个 的标识token, 将得到的token合并为一个 列表; S2.2、 token是一个字符串, 将token中的每一个字符转换成ASCII中对应的十进制 值, 然后采用加法运算规则计算该token中所有token对应的十进制值, 将得到的结果作为该 token的语义 值tsv; S2.3、 将实例中的所有to ken按照步骤S2.2计算得到实例对应的实例向量tsv_l ist; S2.4、 将项目中的所有实例按步骤S2.3处理得到tsv_listi, 计算每一个tsv_list列表权 利 要 求 书 1/3 页 2 CN 114968764 A 2的长度, 统计列表的最大长度tsv_list_max。 将长度没有达到tsv_list_max的列表使用0填 补到最大长度; S2.5、 设定列表长度cl ip_len, 将每一个tsv_l ist长度按cl ip_len截取 得到tsv_cl ipi; S2.6、 读取源项目源代码集, 按照步骤S2.1~S2.5构建源项目代码实例向量集PCIVS ‑S =[tsv_cl ip1,tsv_clip2,…,tsv_clipi]; S2.7、 读取目标项目源代码集, 按照步骤S2.1~S2.5构建目标项目代码实例向量集 PCIVS‑T=[tsv_cl ip1,tsv_clip2,…,tsv_clipj]。 4.根据权利要求1所述的基于代码语义融合传统度量元的软件缺陷预测方法, 其特征 在于, 步骤S3包括如下步骤: S3.1、 初始化GRU隐藏层状态; S3.2、 模型优化器采用Adam; S3.3、 模型的batch设为当前项目的实例个数, 序列长度设为clip_len, 将同一个GRU正 向和反向的隐藏层累加作为当前GRU的输出out; S3.4、 定义处 理隐藏层特 征维度容器EFC, 按顺序添加全连接层1, 激活层, 全连接层2; S3.5、 定义处 理序列长度容器SLC, 按顺序添加全连接层1, 激活层, 全连接层2; S3.6、 定义统一输出语义 容器UOSC, 添加全连接层; S3.7、 将步骤S3.3的输出按顺序经过步骤S3.4、 S3.5、 S3.6处理, 计算该结果与实例对 应的标签之间的损失, 将损失反向传递给整个网络实现对权 重的调整; S3.8、 由步骤S3.1~S3.7定义的容器和规则构建语义提取器SEM, 并通过语义提取器 SEM多次训练得到源代码多语义信息 。 5.根据权利要求1所述的基于代码语义融合传统度量元的软件缺陷预测方法, 其特征 在于, 步骤S4包括如下步骤: S4.1、 从步骤S2.6中选择源项目代码实例向量集中的一个实例向量, 使用步骤S3构建 的语义提取器SE M对该实例向量进行语义 提取; S4.2、 在第一次迭代次数下重复S4.1步骤直到所有源项目中实例向量的语义提取完 成; S4.3、 设置迭代次数epochs, 将步骤S4.2重复epochs次, 将每一次迭代训练得到的结果 记录在源项目代码语义向量 集GSVS‑s中; S4.4、 从步骤S2.7中选择目标项 目代码实例向量集中的一个实例向量, 使用步骤S3构 建的语义 提取器SE M对该实例向量进行语义 提取; S4.5、 在第一次迭代次数下重 复S4.4步骤直到所有目标项目中实例向量的语义提取完 成; S4.6、 设置迭代次数epochs, 将步骤S4.5重复epochs次, 将每一次迭代训练得到的结果 记录在目标项目代码语义向量 集GSVS‑t中。 6.根据权利要求1所述的基于代码语义融合传统度量元的软件缺陷预测方法, 其特征 在于, 步骤S5包括如下步骤: S5.1、 使用步骤S3构建的语义提取器SEM对项目传统度量元向量集的一个传统度量元 向量进行语义抽取; S5.2、 在第一次迭代次数下重复步骤S5.1, 直到所有项目传统度量元向量语义提取完权 利 要 求 书 2/3 页 3 CN 114968764 A 3

.PDF文档 专利 基于代码语义融合传统度量元的软件缺陷预测方法

文档预览
中文文档 13 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于代码语义融合传统度量元的软件缺陷预测方法 第 1 页 专利 基于代码语义融合传统度量元的软件缺陷预测方法 第 2 页 专利 基于代码语义融合传统度量元的软件缺陷预测方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 17:48:49上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。