[发明专利]一种基于深度神经网络的Python资源敏感缺陷代码检测方法有效
申请号: | 201610915633.4 | 申请日: | 2016-10-20 |
公开(公告)号: | CN107967208B | 公开(公告)日: | 2020-01-17 |
发明(设计)人: | 陈林;潘陶;陈芝菲;李言辉;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 神经网络 python 资源 敏感 缺陷 代码 检测 方法 | ||
本发明为一种基于深度神经网络的Python资源敏感缺陷代码检测方法,包括下列步骤:1)获取同一软件的历史版本的源代码和待测版本的源代码;2)利用类型推断抽取各版本的资源敏感代码模式;3)抽取资源敏感代码模式的相关特征;4)计算缺陷代码模式和安全代码模式、缺陷代码模式和待测代码模式之间的各个特征相似度,生成特征向量,并得到训练集和测试集;5)用训练集训练深度神经网络模型进行特征合并,然后对测试集中的模式对用深度神经网络模型计算相关度并排序;6)在程序开发和维护阶段,根据相关度排序结果对可能发生错误的资源对象操作进行提醒,辅助开发和维护;本发明解决了目前存在缺乏针对Python语言资源敏感代码识别和缺陷代码检测的自动化方法等问题,进而降低软件风险,提高软件质量,从而提高开发者和维护者开发和维护软件的效率。
技术领域
本发明属于计算机技术领域,尤其是软件技术领域,且特别是有关于一种基于深度神经网络的Python资源敏感代码缺陷代码检测方法。
背景技术
随着软件应用技术的不断发展,用户对软件质量的要求越来越高,软件开发者也在通过各种技术满足用户的需求。资源敏感代码是一个处理资源对象的代码块或者语句。在软件的开发和维护阶段,很多资源敏感代码都存在异常隐患,往往在维护过程中才有可能被发现。随着敏捷开发技术的不断流行,版本更替频繁,导致资源敏感代码突然引发异常的情况时时发生。对于资源敏感代码异常处理最传统的解决方法是:使用try-except关键字进行捕获和处理。然而,开发者在开发阶段,往往忽视异常处理,从而导致程序出现突发性异常,导致应用崩溃。因而对资源对象危险操作的识别与检测是程序开发和维护阶段必不可少的步骤,它可以有效地提高程序质量,帮助开发和维护人员及时发现程序问题,从而制定更有效的解决方案。
目前,Python已经成为开发者十分青睐的编程语言。现在,各大开源社区Python应用不断涌现,形成了一个庞大的生态系统。Python是一种面向对象的、解释型程序语言,具有简洁、优雅、实用的特征。作为一种动态语言,Python更多地应用于设计互联网应用、图形用户界面和脚本植入等方面,从而涉及各种类型的资源。由于Python语言的动态语言特性,开发者往往动态改变变量类型,导致不安全操作众多。另一方面,Python在对资源对象进行操作时,常常由于资源配置等原因出现各种异常,而这种资源敏感操作产生的问题不容易被发现。目前,开发者采用条件检测、异常处理等方式来控制这些代码缺陷。
现阶段,识别和检测资源对象的方法大致可以分为两类。一类是基于程序分析数据的方法,它可以根据逻辑和语义分析定位资源对象危险操作。与之相反,另一类是使用信息检索的方法,借助于机器学习的方式识别资源对象和检测缺陷代码。第一种方法基于语义分析,可以很快的产生结果,但是具有准确率低、语义规则难以定义等问题。而第二种方法,通过上下文等方式抽取特征,然后利用机器学习的方式进行学习和预测,虽然产生结果较慢,但具有准确率高、实用性强等特点。本发明就是采用机器学习的方式进行检测。
在维护阶段,开发者每次提交可能会同时修复多处相同的缺陷,从而同一版本的缺陷代码具有很强的相关性。本发明根据历史修复信息分辨出缺陷代码和安全代码,且利用缺陷代码之间的相关性,推测同历史缺陷代码相似的代码也很有可能存在缺陷,进一步提供了一种基于深度神经网络的Python资源敏感缺陷代码检测方法。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610915633.4/2.html,转载请声明来源钻瓜专利网。