(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210276660.7
(22)申请日 2022.03.21
(71)申请人 南通大学
地址 226019 江苏省南 通市崇川区啬园路9
号
(72)发明人 文万志 朱宁波 张瑞年 于梦
李治贤 高欣欣 朱文涛 沈陈强
王则林
(74)专利代理 机构 南通一恒专利商标代理事务
所(普通合伙) 32553
专利代理师 梁金娟
(51)Int.Cl.
G06F 11/36(2006.01)
G06F 40/30(2020.01)
G06K 9/62(2022.01)
(54)发明名称
基于语义度量值的源项目选择软件缺陷预
测方法
(57)摘要
本发明提供一种基于语义度量值的源项目
选择软件缺陷预测方法, 包括如下步骤: S1、 使用
AST构建源代码的抽象语法树; S2、 将抽象语法树
转换成向量; S3、 计算源代码的语义度量值; S4、
融合语义度量值和传统度量值; S5、 使用源项目
选择策略SPGather对项目集选择; S6、 使用迁移
学习缩小源域和目标域的数据差异; S7、 构建分
类模型方法集CMMS; S8、 构建基于语义度量值的
源项目选择缺陷预测方法BSCPM。 本发明提出基
于语义度量值的源项目选择软件缺陷预测方法,
可以为目标项目选择更好的源项目, 该方法有助
于提高软件缺陷预测的效率和实现更好的预测
效果。
权利要求书3页 说明书7页 附图3页
CN 114579468 A
2022.06.03
CN 114579468 A
1.一种基于语义度量 值的源项目选择 软件缺陷预测方法, 其特 征在于, 包括如下步骤:
S1、 使用AST构建源代码的抽象语法树;
S2、 将抽象语法树 转换成向量;
S3、 计算源代码的语义度量 值;
S4、 融合语义度量 值和传统度量 值;
S5、 使用源项目选择 策略SPGather对项目集选择;
S6、 使用迁移学习缩小源域和目标域的数据差异;
S7、 构建分类模型 方法集CMMS;
S8、 构建基于语义度量 值的源项目选择缺陷预测方法BSCPM 。
2.根据权利要求1所述的基于语义度量值的源项目选择软件缺陷预测方法, 其特征在
于, 所述步骤S1使用AST构建源代码的抽象语法树的步骤如下:
S1.1、 词法分析: 将源代码按照预定 的规则合并成一个个 的标识tokens, 同时, 移除空
白符、 注释; 最后, 将之前得到的token合并为一个列表; 列表中每一个元素是一个字典, 字
典中存储标识符对应的值以及值所属于的数据类型, 当编译器遇到空格、 操作符或者特殊
符号时停止遍历节点;
S1.2、 语法分析: 将步骤S1.1所得到的列表信息转换成树形的形式, 同时验证语法结
构, 若语法结构存在错误, 编译器抛出语法错误; 编译器在转换树形结构的过程中 自动删除
没有必要的to kens, 比如不完整的括 号;
S1.3、 将项目中的所有实例按步骤S1.1和步骤S1.2处理, 包括源项目和目标项目, 每个
源代码文件解析为抽象语法树。
3.根据权利要求1所述的基于语义度量值的源项目选择软件缺陷预测方法, 其特征在
于, 所述步骤S2将抽象语法树 转换成向量的步骤如下:
S2.1、 计算词语在文章中出现的频率: TF=该词在文章中出现的总次数/该文章总次
数, 词频可以反应出该词 与文章的相关性, 为了防止词频偏向长文件, 需将所有词的频率统
一进行归一 化处理, 假设文章中的某词出现的次数较少, 那么它的TF值较小, 反 之, 值越大;
S2.2、 计算逆向文件词频: IDF=log10, 该指标反应出某词出现的普遍性, 假设某词在所
有文章中出现的次数较少, 那么它的IDF值较大, 反 之, 值越小;
S2.3、 计算文章中所有词的TF ‑IDF值: TF ‑IDF=TF*ID F, 该值与一个词在文档中 的出现
次数成正比, 与该词在整个 语言中的出现次数成反比;
S2.4、 将步骤S1中每个代码示例得到抽象语法树节点列表按S2.1、 S2.2、 S2.3顺序处
理, 得到每 个代码实例的向量。
4.根据权利要求1所述的基于语义度量值的源项目选择软件缺陷预测方法, 其特征在
于, 所述步骤S3计算源代码的语义度量 值的步骤如下:
S3.1、 每个文件AST节点数量Ast ‑num: 该值大小反应的是AST方法对每个源代码类实例
提取节点向量的节点数量大小, 若某代码片段的抽象语法树中节点数量越多, 表明该段代
码语法结构越复杂, 那么出现缺陷的概 率就越大;
S3.2、 每个文件历史版本的缺 陷情况Pro ‑bug: 某项目之前版本的代码缺陷情况影响后
面版本的软件缺陷情况, 若该项目之前版本中软件缺陷较多, 那么后面版本的出现缺陷概
率就越大;权 利 要 求 书 1/3 页
2
CN 114579468 A
2S3.3、 抽象语法树节点向量的节点相似率Code ‑simi: 使用公共子序列算法计算出两个
项目中同名的代码文件对应抽象语法树中相同节点的个数, 统计当前版本和之前版本同名
的代码文件中的相同AST节 点数量, 记 为a; 统计 之前版本AST的所有节点数量, 记 为b; Code ‑
simi=a/b, 节点相 似率越大则当前版本的软件缺陷情况和之前的版本的软件缺陷情况越
相似;
S3.4、 抽象语法树节点向量的余弦相似度Cosine ‑simi: 该指标通过计算两个向量之间
的余弦值度量两个向量之 间的相似性; 将之前版本表示的向量记为A, 将当前版本对应的向
量记为B, 那么Co sine‑simi=(A*B)/(||A||*||B||), 若以前版本没有当前版本的代码文件
时, 那么余弦相似度为0 。
5.根据权利要求1所述的基于语义度量值的源项目选择软件缺陷预测方法, 其特征在
于, 所述步骤S4融合语义度量 值和传统度量 值的步骤如下:
S4.1、 构建语义度量值集合COSM: COSM={Ast ‑num, Pro ‑bug, Code ‑simi, Cosine ‑
simi};
S4.2、 由步骤S3得到每 个代码实例对应的COSM和FEAT URE20;
S4.3、 由步骤S4.2组合成表示每 个代码实例新的特 征集CINF=[COSM, FEAT URE20]。
6.根据权利要求1所述的基于语义度量值的源项目选择软件缺陷预测方法, 其特征在
于, 所述步骤S5构建源项目选择 策略集SPGather的步骤如下:
S5.1、 构建源项目选择方法mean_log: 对于给定的源项目集{X1, X2, ..., Xn}, 其中i=1,
2, ..., n, 目标项目Y, Xi=log(1+Xi), Y′=log(1+Y)。 Mean(Xi′)是Xi′所有特征度量值的平
均值组成的向量; Dist(Xi′, Y′)是Xi′和Y′之间的欧式距离, 如果Dist(Xj′, Y′)是{Dist
(X1′, Y′), Dist(X2′, Y′), ..., Dist(Xn′, Y′)}的最小距离, 那么Xj就被选择为源项目;
S5.2、 构建源项目选择方法std_log: 对于给定的源项目集{X1, X2, ..., Xn}, 目标项目Y,
Xi′=log(1+Xi), Y′=log(1+Y), Std(Xi′)是Xi′所有特征度量值的标准差组成的向量; Dist
(Xi′, Y′)是Xi′和Y′之间的欧式距离, 如果Dist(Xj′, Y′)是{Dist(X1′, Y′), Dist(X2′,
Y′), ..., Dist(Xn′, Y′)}的最小距离, 那么Xj就被选择为源项目;
S5.3、 构建源项目选择方法median_log: 对于给定的源项目集{X1, X2, ..., Xn}, 目标项
目Y, Xi′=log(1+Xi), Y′=log(1+Y), Median(Xi′)是Xi′所有特征度量值的中位数组成的向
量; Dist(Xi′, Y′)是Xi′和Y′之间的欧式距离, 如果Dist(Xj′, Y′)是{Dist(X1′, Y′), Dist
(X2′, Y′), ..., Dist(Xn′, Y′)}的最小距离, 那么Xj就被选择为源项目;
S5.4、 组成源项目选择 方法集SPGather={mean_l og, std_l og, median_l og}。
7.根据权利要求1所述的基于语义度量值的源项目选择软件缺陷预测方法, 其特征在
于, 所述步骤S6使用迁移学习缩小源域和目标域的数据差异的步骤如下:
S6.1、 源项目特征矩阵DS, 行数为m, 代表源项目的实例个数, 列数为n, 代表源项目的特
征个数; 目标项目特征矩阵DT, 行数为k, 代表目标项目的实例个数, 列数为n, 代表目标项目
的特征个数;
S6.2、 将源项目特 征矩阵DS与目标项目特 征矩阵DT 按列拼接得到D D;
S6.3、 构建核矩阵K, K=D D*DDT;
S6.4、 构建线性系数矩阵L, 若两个实例来自同一个项目且在源项目, 那么Lij=1/m2, 其
中i表示矩阵的行, j表示矩阵的列, 分别表 示两个实例的序号, 若两个实例来自 同一个项目权 利 要 求 书 2/3 页
3
CN 114579468 A
3
专利 基于语义度量值的源项目选择软件缺陷预测方法
文档预览
中文文档
14 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 17:49:53上传分享