基于缺陷模式的静态分析方法和工具技术

技术编号:15762874 阅读:90 留言:0更新日期:2017-07-05 23:12
本发明专利技术公开了一种基于缺陷模式的程序静态分析方法和工具,包括:预编辑程序的缺陷模式;遍历文件,找到所需分析的文件;对源程序进行逐行扫描,去除无需分析的代码;进行缺陷分析,调用该缺陷模式与去除代码后的程序进行匹配,如果匹配成功,则说明该文件存在该缺陷。本发明专利技术的有益效果在于,本发明专利技术的一种基于缺陷模式的静态分析方法和工具,可以实现应用系统的兼容性检查,对迁移前的准备做出指导,对应用系统的自主可控迁移进行评估和指导。

Static analysis methods and tools based on defect patterns

The invention discloses a defect mode based on static program analysis methods and tools, including: pre defect pattern editor; traverse the file, find the file analysis; progressive scan of the source program, without removing code analysis; defect analysis, matching with the defect mode and the removal of the code the program, if the match is successful, then there is the defect of the file. The invention has the advantages that the invention, a method and tool of defect mode based on static analysis, the compatibility check can achieve application system, make guidance to the migration of preparations, the application system of self controlled migration assessment and guidance.

【技术实现步骤摘要】
基于缺陷模式的静态分析方法和工具
本专利技术涉及源代码分析领域,尤其涉及一种基于缺陷模式的静态分析方法和工具。
技术介绍
当前,我国软硬件基础设施,包括处理器、操作系统、甚至关键应用软件(如数据库、应用服务器)等,大多依赖于国外技术。“棱镜门”事件深刻表明:软硬件基础平台不自主,安全防护体系便形同虚设。为响应中央军委提出“大力推进自主可控信息系统建设,摆脱信息技术受制于人的局面”的要求,国家先后发布了一系列政策文件,强力推进国产自主化建设应用。自主可控平台采用国产龙芯、飞腾芯片架构,运行基于Linux的中标麒麟操作系统。由于Wintel环境下底层操作指令、硬件环境及系统开发环境与自主可控平台下存在较大差异。如Windows平台与Linux平台间底层操作指令的不同,Intel芯片与国产龙芯、飞腾芯片架构的不同,原来在政府、各企事业单位研制的基于Windows集成开发环境的各类应用系统,存在与Linux平台开发环境不兼容等问题,造成原有应用软件在自主可控服务器及自主可控终端无法直接运行。在进行自主可控应用软件的迁移改造或重构工作中,已经形成的信息化建设的成果不能由于自主可控而全部丢弃,而如果因自主可控而导致信息化水平的大幅后退也是用户不能接受的,因此需要有相应的手段能够将基于Wintel环境下研制的各类信息化软件在自主可控平台上完成顺利迁移改造或快速的重建。因此迫切需要一种源代码评估方法,用于快速评估软件系统进行自主可控平台迁移的可行性,并对迁移前的准备做出指导,实现应用系统的兼容性检查,完成对应用系统的自主可控迁移评估和指导等工作。
技术实现思路
本专利技术一种基于缺陷模式的程序静态分析方法,包括:预编辑程序的缺陷模式;遍历文件,找到所需分析的文件;对源程序进行逐行扫描,去除无需分析的代码;进行缺陷分析,调用该缺陷模式与去除代码后的程序进行匹配,如果匹配成功,则说明该文件存在该缺陷。根据本专利技术的基于缺陷模式的程序静态分析方法的一实施例,其中,遍历文件,找到所需分析的文件,包括:通过读取用户指定的源程序所在目录,获取该目录下所有文件,进行遍历,根据需要分析的问题类型对文件进行过滤。根据本专利技术的基于缺陷模式的程序静态分析方法的一实施例,其中,对源程序进行逐行扫描得到的信息包括类名、所属包、引用包、数据成员及其所属类型、成员方法及其参数个数、参数类型与返回值。根据本专利技术的基于缺陷模式的程序静态分析方法的一实施例,其中,该缺陷模式存储在数据库中,进行缺陷分析之前根据需要分析的文件类型、缺陷类型,从数据库中读取。根据本专利技术的基于缺陷模式的程序静态分析方法的一实施例,其中,得到调用该缺陷模式与该去除代码后的程序进行匹配的结果后,按照缺陷模式,对于每个缺陷模式,汇总该缺陷模式匹配成功的文件,每个文件中该缺陷模式匹配成功的次数及其所在行数。本专利技术一种基于缺陷模式的静态分析工具,其中,包括:分析引擎以及知识模式数据库模块;该知识模式数据库模块用于存储程序的缺陷模式;该分析引擎用于遍历文件,找到所需分析的文件;对源程序进行逐行扫描,去除无需分析的代码;以及从该知识模式数据库模块调用该缺陷模式并与去除代码后的程序进行匹配。本专利技术的有益效果在于,本专利技术一种基于缺陷模式的静态分析方法和工具,可以实现应用系统的兼容性检查,对迁移前的准备做出指导,对应用系统的自主可控迁移进行评估和指导。附图说明图1所示为本专利技术基于缺陷模式的静态分析工具的模块图;图2所示为本专利技术基于缺陷模式的静态分析工具的工作流程图。具体实施方式为使本专利技术的目的、内容、和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。图1所示为本专利技术基于缺陷模式的静态分析工具的模块图,如图1所示,分析工具2包括:分析引擎3以及知识模式数据库模块5。参考图1,知识模式数据库模块5用于存储缺陷模式。进行缺陷分析之前需要根据需要分析的文件类型、缺陷类型,从数据库中读取。缺陷模式加载成功后,会存储为缺陷模式数据模型,用于缺陷分析。分析引擎3用于通过读取用户指定的源程序所在目录,获取该目录下所有文件。遍历该目录下所有的文件和文件夹,根据需要分析的问题类型对文件进行过滤,例如分析Java语言和SQL语言的缺陷需要关注扩展名为“.java”的源程序文件,分析JavaScript语言需要关注扩展名为“.js”的源程序文件,同时需要跳过第三方的库文件。将所有关注的文件基本信息汇总,形成文件信息的数据模型。分析引擎3还用于对对源程序进行逐行扫描,去除无需分析的代码,此处过滤掉了以“//”开头的单行注释;以“/*”开始并且以“*/”结尾的多行区块注释;以“@”开头的声明语句;单独成行的括号,包括小括号“()”,中括号“[]”和大括号“{}”,以及空行。同时,分析源代码。对于“.java”文件,分析得到Java类的基本信息,包括类名、所属包、引用包、数据成员及其所属类型、成员方法及其参数个数、参数类型与返回值。最后将经过分析的源代码及相关信息存储到文件模型中,以后用于缺陷分析。分析引擎3根据文件模型和缺陷模式数据模型,进行缺陷分析。首先遍历文件模型,对于每个文件模型,遍历缺陷模式数据模型,将文件模型的源代码文件内容与缺陷模式数据模型中的定义的缺陷形式进行匹配,进行模型匹配,如果匹配成功,则说明该文件存在该缺陷。最后,把缺陷匹配信息存储为数据模型。并基于数据模型,生成分析结果。分析结果按照缺陷模式区分,对于每个缺陷模式,汇总该缺陷模式匹配成功的文件,每个文件中该缺陷模式匹配成功的次数及其所在行数。对于每个缺陷模式,还会列出针对性的解决建议,用户可以根据解决建议进行源代码的修改。本专利技术还提供了一种基于缺陷模式的静态分析方法,主要用于分析源程序语言为Java语言和JavaScript语言。缺陷模式划分为三大类别:Java语言的缺陷模式、JavaScript语言的缺陷模式和SQL语言的缺陷模式。Java语言的缺陷模式可以细分为系统调用缺陷模式、新建数组/容器对象缺陷模式、对象实例化缺陷模式。其中系统调用缺陷模式是指Java程序中调用了系统相关的脚本或者可执行程序,由于自主可控平台运行基于Linux的操作系统,原有在windows上调用的脚本或可执行程序在自主可控平台上不能运行。新建数组/容器对象缺陷模式、对象实例化缺陷模式涉及Java的垃圾自动回收机制,Java垃圾自动回收机制在自主可控平台上影响JVM运行效率,建议手动回收。JavaScript语言的缺陷模式可以细分为方法调用缺陷模式、ActiveX缺陷模式、对话框打开缺陷模式、页面跳转缺陷模式、页面元素获取缺陷模式。其中方法调用缺陷模式是指某些JavaScript方法,例如innerText,在IE中能正常工作,但是在自主可控平台的Linux系统上没有IE浏览器,需要兼容Firefox浏览器;ActiveX缺陷模式是指在IE下,可以使用ActiveX控件;Firefox下,无法使用。ActiveX控件技术仅限于Windows平台,需要基于NPAPI或QtBrowserPlugin,重新开发Firefox插件。JavaScript语言相关的缺陷模式就是解决Firefox浏览器兼容性的问题。SQL语言缺陷模式则是指内置函数缺陷模式。原本文档来自技高网...
基于缺陷模式的静态分析方法和工具

【技术保护点】
一种基于缺陷模式的程序静态分析方法,包括:预编辑程序的缺陷模式;遍历文件,找到所需分析的文件;对源程序进行逐行扫描,去除无需分析的代码;进行缺陷分析,调用该缺陷模式与去除代码后的程序进行匹配,如果匹配成功,则说明该文件存在该缺陷。

【技术特征摘要】
1.一种基于缺陷模式的程序静态分析方法,包括:预编辑程序的缺陷模式;遍历文件,找到所需分析的文件;对源程序进行逐行扫描,去除无需分析的代码;进行缺陷分析,调用该缺陷模式与去除代码后的程序进行匹配,如果匹配成功,则说明该文件存在该缺陷。2.如权利要求1所述的基于缺陷模式的程序静态分析方法,其特征在于,遍历文件,找到所需分析的文件,包括:通过读取用户指定的源程序所在目录,获取该目录下所有文件,进行遍历,根据需要分析的问题类型对文件进行过滤。3.如权利要求1所述的基于缺陷模式的程序静态分析方法,其特征在于,对源程序进行逐行扫描得到的信息包括类名、所属包、引用包、数据成员及其所属类型、成员方法及其参数个数、参数类型与返回值。4.如权利要求1所述的基于缺陷...

【专利技术属性】
技术研发人员:刘磊何沁洁孙渊博常青穆森
申请(专利权)人:北京计算机技术及应用研究所北京航天爱威电子技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1