[发明专利]源代码静态分析方法在审
申请号: | 202010035928.9 | 申请日: | 2020-01-09 |
公开(公告)号: | CN111240982A | 公开(公告)日: | 2020-06-05 |
发明(设计)人: | 黄滟鸿;郭旺;史建琦;蔡方达;郭欣;石奇 | 申请(专利权)人: | 华东师范大学;上海丰蕾信息科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京辰权知识产权代理有限公司 11619 | 代理人: | 付婧 |
地址: | 200062 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 源代码 静态 分析 方法 | ||
本申请公开了一种源代码静态分析方法,包括:对源代码进行词法分析和语法分析,生成抽象语法树;对所述抽象语法树进行语义分析,得到有向控制流图和数据流图;对所述有向控制流图进行遍历,获取切片数据;根据所述数据流图和所述切片数据,查找并输出所述源代码中可能存在缺陷的变量。本申请提供的源代码静态分析方法,可以完成对源代码的较全面的检查,可以解决星载软件中的编码缺陷问题,不仅提高了检查效率,降低了人力成本,而且能够有效地提高软件源代码的安全性、可靠性,降低了程序错误发生的几率,能够很好地满足实际应用的需要。
技术领域
本申请涉及软件检测技术领域,具体涉及一种面向星载软件的源代码静态分析方法。
背景技术
随着现代信息技术的飞速发展,人类社会的信息化、智能化程度越来越高,计算机软件支撑起了物联网、大数据、人工智能等新兴领域的发展,计算机软件已经成为社会各个领域前进的重要载体,渗透到了社会生活的各个方面,普及到社会的各行业各领域,如交通、通信、金融以及国防安全等领域。因此,作为社会生活领域各方面的支撑,软件系统的安全性和可靠性显得尤其重要。不断提高软件的可靠性一直都是软件质量保证的研究重点。目前,软件产品的应用越来越广泛,软件系统的规模也越来越大,复杂度越来越高,人们对软件的可靠性和安全性要求也越来越高。
由于静态代码分析技术能够克服人工测试速度慢、效率低下的缺点,能在软件开发早期发现绝大多数的编码缺陷,是目前软件质量保障领域的研究重点和热点。静态分析技术是一种常用的软件分析技术,通过对源代码进行扫描,并分析其静态属性,能够在软件开发的早期发现并排除软件可能存在缺陷。静态代码分析可以在软件开发的整个生命周期中检测软件缺陷。学术界和工业界对此都做出了很多的努力,涌现出了大量的验证方法和工具。这些方法和工具针对的是系统不同的方面,而且各有优劣。然而,实际应用中,现有的方法和工具在提高软件源代码的安全性、可靠性方面效果不佳,不能满足实际应用的需要。
发明内容
本申请的目的是提供一种源代码静态分析方法。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
根据本申请实施例的一个方面,提供一种源代码静态分析方法,包括:
对源代码进行词法分析和语法分析,生成抽象语法树;
对所述抽象语法树进行语义分析,得到有向控制流图和数据流图;
对所述有向控制流图进行遍历,获取切片数据;
根据所述数据流图和所述切片数据,查找并输出所述源代码中可能存在缺陷的变量。
进一步地,所述词法分析包括:
对所述源代码进行扫描,根据构词规则,采用正则表达式来识别所述源代码中的有用部分作为词法单元,产生由词法单元构成的序列;
将所述由词法单元构成的序列与预定义的缺陷序列进行匹配,将所述源代码中匹配成功的缺陷部分找出来并删除所述缺陷部分。
进一步地,所述语法分析包括:将经过所述词法分析的源代码按照语法规则转化成语句单元,构建抽象语法树。
进一步地,所述对所述抽象语法树进行语义分析,得到有向控制流图和数据流图,包括:
定义所述抽象语法树的不同类型的节点,基于所述节点利用文法结构推导出所述抽象语法树中的语句;
对所述语句进行控制流分析和数据流分析,生成有向控制流图和数据流图。
进一步地,所述对所述有向控制流图进行遍历,获取切片数据,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学;上海丰蕾信息科技有限公司,未经华东师范大学;上海丰蕾信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010035928.9/2.html,转载请声明来源钻瓜专利网。