[发明专利]静态代码检测方法和静态代码检测系统、存储设备有效
申请号: | 201810637058.5 | 申请日: | 2018-06-20 |
公开(公告)号: | CN108897678B | 公开(公告)日: | 2021-10-15 |
发明(设计)人: | 杨学红 | 申请(专利权)人: | 中国联合网络通信集团有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京天昊联合知识产权代理有限公司 11112 | 代理人: | 彭瑞欣;罗瑞芝 |
地址: | 100033 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 静态 代码 检测 方法 系统 存储 设备 | ||
本发明属于编程技术领域,涉及静态代码检测方法和静态代码检测系统、存储设备。该静态代码检测方法包括步骤:对静态代码进行处理,提取变量信息,建立相关变量集合;根据可能产生缺陷的变量进行缺陷归类,建立缺陷集,所述缺陷集至少包括一个缺陷子集,每一所述缺陷子集包括一个与变量相关的根节点缺陷;根据所述缺陷子集中所述根节点缺陷的误报状况,确认缺陷。本发明通过在传统的静态缺陷检测的基础上增加了缺陷关联分析技术,从缺陷之间的内在关联出发,将具有依赖关系的缺陷分为一组;若缺陷之间具有子集关系,如果缺陷子集中的根节点是误报,则整个子集中的所有缺陷均是误报,从而大大提高静态代码检测缺陷确认效率,减少人工确认的工作量。
技术领域
本发明属于编程技术领域,具体涉及一种静态代码检测方法和静态代码检测系统、存储设备。
背景技术
静态代码检测是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态代码检测通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。静态代码检测由于不需要运行代码而深受欢迎,但是后续人工缺陷确认的工作量又是一个影响其广泛应用的问题。
缺陷代码扫描是一个静态代码检测技术,目前比较普遍的方法是测试完毕以后人工对缺陷检测结果进行确认。静态代码检测过程包括:首先对缺陷进行建模,然后通过扫描源代码来检测缺陷,但由于检测过程不需要运行程序,导致检测出来的缺陷存在误报的问题,现有技术都是从提高精度的角度出发,比如区间运算、函数分析等,对减少人工确认的工作量方面的研究尚未有涉足。
如何减少缺陷确认的工作量,是一个研究热点,也称为亟待解决的一个问题。
发明内容
本发明所要解决的技术问题是针对现有技术中上述不足,提供一种静态代码检测方法和静态代码检测系统、存储设备,能极大减少人工确认的工作量。
解决本发明技术问题所采用的技术方案是该静态代码检测方法,包括步骤:
对静态代码进行处理,提取变量信息,建立相关变量集合;
根据可能产生缺陷的变量进行缺陷归类,建立缺陷集,所述缺陷集至少包括一个缺陷子集,每一所述缺陷子集包括一个与变量相关的根节点缺陷;
根据所述缺陷子集中所述根节点缺陷的误报状况,确认缺陷。
优选的是,建立相关变量集合的步骤包括:
对静态代码进行词法分析、语义处理;
根据与变量名相关的名称,建立所述相关变量集合。
优选的是,对静态代码进行词法分析为:采用自动化业务流程组合语言进行分析,得到一个文档对象模型树,基于该文档对象模型树生成控制流图;
语义处理为:在所述控制流图的基础上生成定义使用链。
优选的是,建立相关变量集合的步骤还包括:根据与变量名相关名称的赋值函数或函数调用关系,进行别名分析,建立所述相关变量集合。
优选的是,建立缺陷集的步骤包括:
将具有依赖性的变量可能引起的相关缺陷归为一类,建立同类缺陷子集,多个所述缺陷子集形成所述缺陷集。
优选的是,确认缺陷的步骤包括:
根据缺陷关联性进行缺陷误报确认,若所述缺陷子集中根节点缺陷为误报,则所述缺陷子集中与所述根节点缺陷相关的所有缺陷均为误报。
优选的是,确认缺陷的步骤还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国联合网络通信集团有限公司,未经中国联合网络通信集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810637058.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:日志构建方法和系统
- 下一篇:一种部署服务器操作系统测试环境的方法及系统