说明:收录25万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210276087.X (22)申请日 2022.03.21 (71)申请人 南京航空航天大 学 地址 211106 江苏省南京市江宁区将军大 道29号 (72)发明人 宫丽娜 魏明强 刘云 张静宣  (74)专利代理 机构 青岛锦佳专利代理事务所 (普通合伙) 37283 专利代理师 朱玉建 (51)Int.Cl. G06V 30/40(2022.01) G06V 10/56(2022.01) G06V 10/44(2022.01) G06V 10/82(2022.01) G06V 10/764(2022.01)G06K 9/62(2022.01) G06F 11/36(2006.01) G06N 3/04(2006.01) G06N 3/08(2006.01) (54)发明名称 一种基于代码可视化学习的软件缺陷预测 方法 (57)摘要 本发明属于软件缺陷预测技术领域, 具体公 开了一种基于代码可视化学习的软件缺陷预测 方法, 该软件缺陷预测方法包括如下: 步骤1.数 据收集与标记; 步骤2.代码片段可视化表示; 步 骤3.微调预训练Efficientnet特征提取模型, 得 到符合源代码特性的缺陷预测模型; 步骤4.根据 微调后得到的缺陷预测模型, 实现对被测源代码 缺陷状态的预测。 本发明通过将源代码文件中代 码片段可视化为图像, 以便捕获源文件的语义和 结构信息, 同时通过微调已经训练好的基于图片 的深度学习特征提取模型, 来构建一个新的端到 端的深度学习缺陷预测模型, 摆脱了基于自然语 言模型受限于训练词向量表示的限制, 提高了软 件缺陷预测模 型的性能和通用型, 合理分配了测 试资源, 提高了软件质量。 权利要求书2页 说明书4页 附图5页 CN 114782967 A 2022.07.22 CN 114782967 A 1.一种基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 包括如下步骤: 步骤1.首先从GitHub开源社区中收集所需的源代码文件、 代码提交以及缺陷报告信 息, 然后根据代码提交及缺陷报告信息, 实现对 源代码文件的有无缺陷标记; 其中, 将源代码文件中标记的有缺陷代码和无缺陷代码作为标签数据; 步骤2.使用包括pillow  python图像绘制和渲染包、 Google  code‑prettify   javascript库、 javalang  Python包以及ASCII十进制转换在内的四种方式, 实现源代码文 件中代码片段从颜色、 形状和结构的图像可视化表示, 得到四种源代码图片数据; 步骤3.使用步骤1中的标签数据和步骤2中的源代码图片数据, 微调基于ImageNet图像 预训练的Ef ficientnet ‑v2特征提取模型, 得到符合源代码特性的缺陷预测模型; 步骤4.根据微调后得到的缺陷预测模型, 实现对被测代码片段缺陷状态的预测。 2.根据权利要求1所述的基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 所述步骤1具体为: 步骤1.1.根据GitHub开源社区中Stars以及开源项目的开发周期, 选择多个开源项目; 步骤1.2.对收集到的开源项目进行 预处理, 预处理过程包括: a)筛选出开源项目中的源代码文件; b)筛选出开源项目中报告 项目缺陷的问题报告; 步骤1.3.通过代码提交里的缺陷报告关键词, 建立代码提交与问题报告之间的连接, 根据代码提交与问题报告之间建立的连接, 确定修复缺陷的代码提交; 步骤1.4.根据修复缺陷的代码提交, 采用SZ Z方法识别出引入缺陷的代码提交; 步骤1.5.将源代码文件中处于引入缺陷的代码提交与修复缺陷的代码提交之间的代 码片段标记为有缺陷代码; 否则, 标记为无缺陷代码。 3.根据权利要求2所述的基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 所述步骤2具体为: 步骤2.1.使用pillow  python图像绘制和渲染包将代码片段表示为黑白图像作为基线 可视化表示, 通过 学习字符和单词的视 觉形状作为代码块形状, 以识别代码逻辑结构; 步骤2.2.首先使用Google  code‑prettify  javascript库将代码片 段可视化为一个用 颜色突出显示语法的渲 染代码文本, 然后使用imgkit的python包将生 成的渲染代码文本页 面转换为PNG图像; 步骤2 .3 .使用javalang  Python包将代码片段转换为抽象语法树, 并利用 graphvizPython包生成一个graphviz图, 图中边代表代码内的控制流, 以捕获源代码的顺 序性; 步骤2.4.将代码片段转换成ASCII十进制的8位无符号整数向量, 然后通过将8位无符 号整数向量的向量 值排列在矩阵 图像的行和列中, 实现从向量 生成图像。 4.根据权利要求3所述的基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 所述步骤3具体为: 步骤3.1.预训练的Efficientnet ‑v2特征提取模型的默认输入为224*224, 将步骤2中 得到的源代码图片, 统一 转换为224*224大小的源代码图片; 步骤3.2.基于Efficientnet ‑v2特征提取模型, 加入全连接层, 形成深度学习模型, 深 度学习模型的特 征层的权 重值初始化 为Efficientnet ‑v2特征提取模型的权 重值;权 利 要 求 书 1/2 页 2 CN 114782967 A 2步骤3.3.使用步骤1得到的标签数据和经过步骤3.1预处理后的源代码图片, 采用反向 传播方式训练步骤3.2构建的深度学习模型, 得到最终的缺陷预测模型。 5.根据权利要求 4所述的基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 所述步骤3.1具体为: 将步骤2中的源代码图片划分成尺寸大于和小于2 24*224像素的源代码图片; 其中, 尺寸大于224*224像素的源代码图片裁剪为224*224大小的源代码图片, 尺寸小 于224*224像素的源代码图片被填充带有空白像素并形成2 24*224大小的源代码图片。 6.根据权利要求 4所述的基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 所述步骤4具体为: 步骤4.1.对收集到的被测项目的代码片段, 使用步骤2中的代码片段可视化表示方法, 将被测项目的代码片段转换为 4种形式的图片; 步骤4.2.将步骤4.1中4种形式的图片分别放入经过步骤3调整后的缺陷预测模型中, 使得每个图片均得到一个相应的分类结果, 即是否为 缺陷代码片段; 步骤4.3.根据步骤4.2得到的对被测项目的代码片段的4种分类结果, 采用投票的集成 机制, 得到最终的代码片段的缺陷状态。 7.根据权利要求6所述的基于代码可视化学习的软件缺陷预测方法, 其特 征在于, 所述步骤4.3具体为: 计算4种分类结果中为有 缺陷样本的数量nd以及无缺陷样本的数量nc; 若nd≥nc, 则被测 项目的代码片段为有缺陷代码片段; 若nd<nc, 则被测项目的代码片段为无缺陷代码片段。权 利 要 求 书 2/2 页 3 CN 114782967 A 3

PDF文档 专利 一种基于代码可视化学习的软件缺陷预测方法

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