[发明专利]软件源代码缺陷检测方法、系统、电子设备及储存介质有效
申请号: | 202110958006.X | 申请日: | 2021-08-20 |
公开(公告)号: | CN113641586B | 公开(公告)日: | 2022-04-15 |
发明(设计)人: | 张世琨;叶蔚;邓枭;高庆;张君福 | 申请(专利权)人: | 北京北大软件工程股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/04;G06N3/08;G06K9/62;G06V10/764 |
代理公司: | 北京华创智道知识产权代理事务所(普通合伙) 11888 | 代理人: | 彭随丽 |
地址: | 100082 北京市海淀区北四*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 源代码 缺陷 检测 方法 系统 电子设备 储存 介质 | ||
1.一种软件源代码缺陷检测方法,其特征在于,包括:
步骤一:构建源代码缺陷数据集,基于开源项目的缺陷信息构建用于深度学习模型训练的数据集,包括对所述开源项目存在的缺陷条目进行自动对齐与抽取,根据所述源代码缺陷数据集,检索目标开源项目关键词,得到所述开源项目对应缺陷代码出处与其缺陷类型的匹配,通过启发式的方法,对所述缺陷代码的文字描述进行分析,根据语法分析得到主体类型,定位所述缺陷代码具体位置行,对所述缺陷代码进行切片操作,以所述具体位置行为起点,通过控制流图回溯缺陷路径,得到真实缺陷对应的代码切片,缺陷对,修改所述缺陷代码,对修正后的代码使用所述切片操作并标注是否更改正确,得到真实缺陷源代码数据集;
步骤二:构建基于代码切片的深度学习源代码缺陷检测模型,包括使用多模态的语义表示对代码片段进行表示与分类;
步骤三:将源代码缺陷检测结果汇总并显示。
2.根据权利要求1所述软件源代码缺陷检测方法,其特征在于,步骤二中,进一步包括:
对所述缺陷代码路径进行切片,根据切片中的缺陷发生位置和传播路径,将所述缺陷代码路径扩展为包含更丰富上下文的代码切片,所述代码切片包含多种模态的信息;解析所述代码切片各种元素的结构关系,生成代码知识图谱,用Trans系列方法对知识图谱的节点进行表示学习,得到代码元素的结构语义。
3.根据权利要求2所述软件源代码缺陷检测方法,其特征在于,所述Trans系列方法包括:
根据所述知识图谱,用TransE、TransH和TransR对节点进行学习,得到所述结构语义,完成所述结构语义信息解析。
4.根据权利要求3所述软件源代码缺陷检测方法,其特征在于,根据不同种类的建模方式对所述结构语义进行建模:
基于序列代码语义建模,利用多种网络结构来捕获代码的信息,使用SBT神经网络表达代码序列信息,所述代码序列信息为代码本身的自然序列,通过层次注意力网络进行建模;
基于树的代码语义建模,切片的抽象语法树使用基于树的卷积神经网络TBCNN和基于树的长短期记忆网络Tree-Based LSTM进行建模;
基于图的代码语义建模,代码切片的图结构,使用图注意力网络GAT建模。
5.根据权利要求4所述软件源代码缺陷检测方法,其特征在于,所述层次注意力网络第一层为双向循环神经网络构成的语句编码器,包含字符级注意力机制;所述层次注意力网络第二层为双向循环神经网络构成的切片编码器,包含语句级的注意力机制。
6.根据权利要求5所述软件源代码缺陷检测方法,其特征在于,分别为二分类和多分类模型引入图像分类中的Focal Loss和排序问题中的Ranking Loss作为额外的损失函数。
7.一种软件源代码缺陷检测系统,其特征在于,包括:
源代码缺陷数据集构建模块,构建源代码缺陷数据集,基于开源项目缺陷信息构建用于深度学习模型训练的大规模数据集,包括对开源项目存在的缺陷条目进行自动对齐与抽取,根据所述源代码缺陷数据集,检索目标开源项目关键词,得到所述开源项目对应缺陷代码出处与其缺陷类型的匹配,通过启发式的方法,对所述缺陷代码的文字描述进行分析,根据语法分析得到主体类型,定位所述缺陷代码具体位置行,对所述缺陷代码进行切片操作,以所述具体位置行为起点,通过控制流图回溯缺陷路径,得到真实缺陷对应的代码切片,缺陷对,修改所述缺陷代码,对修正后的代码使用所述切片操作并标注是否更改正确,得到真实缺陷源代码数据集;
源代码缺陷检测模型构建模块,构建基于代码切片的深度学习源代码缺陷检测模型,包括使用多模态的语义表示对代码片段进行表示与分类;
缺陷检测结果集成显示模块,将源代码缺陷检测结果汇总并显示。
8.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的软件源代码缺陷检测方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的软件源代码缺陷检测方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北大软件工程股份有限公司,未经北京北大软件工程股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110958006.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:切塔方法
- 下一篇:一种基于线上业务安全的安全验证系统