[发明专利]一种基于深度神经网络的Python资源敏感缺陷代码检测方法有效
申请号: | 201610915633.4 | 申请日: | 2016-10-20 |
公开(公告)号: | CN107967208B | 公开(公告)日: | 2020-01-17 |
发明(设计)人: | 陈林;潘陶;陈芝菲;李言辉;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明为一种基于深度神经网络的Python资源敏感缺陷代码检测方法,包括下列步骤:1)获取同一软件的历史版本的源代码和待测版本的源代码;2)利用类型推断抽取各版本的资源敏感代码模式;3)抽取资源敏感代码模式的相关特征;4)计算缺陷代码模式和安全代码模式、缺陷代码模式和待测代码模式之间的各个特征相似度,生成特征向量,并得到训练集和测试集;5)用训练集训练深度神经网络模型进行特征合并,然后对测试集中的模式对用深度神经网络模型计算相关度并排序;6)在程序开发和维护阶段,根据相关度排序结果对可能发生错误的资源对象操作进行提醒,辅助开发和维护;本发明解决了目前存在缺乏针对Python语言资源敏感代码识别和缺陷代码检测的自动化方法等问题,进而降低软件风险,提高软件质量,从而提高开发者和维护者开发和维护软件的效率。 | ||
搜索关键词: | 一种 基于 深度 神经网络 python 资源 敏感 缺陷 代码 检测 方法 | ||
【主权项】:
1.一种基于深度神经网络的Python资源敏感缺陷代码检测方法,其特征在于,从软件版本控制系统,收集同一个Python软件的历史版本和待测版本;对于历史版本,接着通过类型推断识别出资源敏感代码模式,并提取对应的模式特征,根据历史修复信息将上述缺陷代码模式和安全代码模式组成相关模式对和非相关模式对,并计算特征相似度生成特征向量,得到训练集;对于待测版本,使用相同的方法提取不同模式和相应特征,将历史版本缺陷代码模式和待测版本模式组成模式对,并计算特征相似度生成特征向量,得到测试集;然后,使用训练集训练深度神经网络模型,将训练好的深度神经网络模型对测试集进行特征合并,得到待测代码与缺陷代码之间的相关度;最后,根据相关度进行排序,选择前k个相关的代码对作为结果,将代码对中的待测代码标注为有潜在缺陷的资源敏感代码,检测出危险资源对象操作,并提供辅助信息;该方法包括下列步骤:/n1)获取同一软件的历史版本的源代码和待测版本的源代码;软件版本控制系统中保存了软件的所有版本提交,并标准化了版本号;可以根据制定的版本号,获取同一Python软件的历史版本和待测版本源代码;/n2)利用类型推断抽取各版本的资源敏感代码模式;对步骤1中已经收集好的历史版本和待测版本源代码进行词法和语法分析,利用Python标准库中的ast模块生成对应的抽象语法树,将Python类型进行抽象化,并对每个节点设置type和value,再使用全局类型推断的方法,抽取资源敏感代码模式;/n资源敏感代码模式,资源敏感代码模式是指对资源对象进行操作的代码片段;/n定义1:Python标准库随Python语言一起发行,包含了提供各种系统级功能的内建模块;/n定义2:类型推断是一种通过对源代码进行静态分析,推断动态语言中变量类型的方法;/n定义3:type用于标识抽象语法树中的节点类型信息,type的具体取值来自Python定义的抽象语法;/n定义4:value是抽象语法树中的节点内容的文本表示;/n3)抽取资源敏感代码模式的相关特征;通过步骤2,我们已从源代码中抽取了资源敏感代码模式;本方法抽取的资源敏感代码模式的相关特征为:API(参数类型,参数顺序)、资源名、调用结构和函数结构;最后,将抽取的特征命名规范化;/n定义1:对于API特征,使用参数类型和参数顺序计算特征相似度;/n定义2:对于资源名特征,使用资源名中的词序列计算特征相似度;/n定义3:对于调用结构特征,使用调用结构相似度作为特征相似度;/n定义4:对于函数结构特征,使用函数结构特征作为特征相似度;/n4)计算缺陷代码模式和安全代码模式、缺陷代码模式和待测代码模式之间的各个特征相似度,生成特征向量,并得到训练集和测试集;对于历史版本,根据历史修复信息将相似的缺陷代码模式两两配对,组成相关模式对;将缺陷代码模式和与其相似的安全代码模式两两配对,组成非相关模式对;对于待测版本,将缺陷代码模式和待测代码模式两两配对,组成待测模式对;然后,根据步骤3抽取的各个特征信息,计算不同模式对的各个特征相似度,并生成特征向量;最后,由历史版本的代码模式对组成的特征向量集得到训练集,由待测版本的代码模式对组成的特征向量集得到测试集;/n定义1:缺陷代码模式是指历史修复信息中随后被修复的资源敏感缺陷代码模式;/n定义2:安全代码模式是指与缺陷代码模式相似但是没有发现缺陷的资源敏感代码模式;/n定义3:API的特征相似度采用VSM算法,其中对于参数类型,采用TF-IDF的算法计算权重,公式如下所示:/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610915633.4/,转载请声明来源钻瓜专利网。