一种基于AST的动态代码分析执行系统及执行方法技术方案

技术编号:36707937 阅读:38 留言:0更新日期:2023-03-01 09:32
本发明专利技术公开了一种基于AST的动态代码分析执行系统及执行方法,具体包括:通过词法分析器和语法解析器,可以将任意一份代码转化为AST语法树,通过对AST语法树进行分析,对代码执行过程的信息进行动态监测,根据当前程序的状态进行判断是否触发了一个潜在漏洞,由于获得的信息是程序真实的状态行为,可以更加有效地降低代码分析的误报率。动态代码执行模块则可以生成程序的多个输入,通过不同方式的流回溯,驱动代码执行不同的路径,从而有效地降低了代码分析的漏报率。本发明专利技术系统及方法克服了静态代码分析执行的难点,在代码的执行过程中,可以降低代码分析的误报率。可以降低代码分析的误报率。可以降低代码分析的误报率。

【技术实现步骤摘要】
一种基于AST的动态代码分析执行系统及执行方法


[0001]本专利技术涉及代码分析
,特别是涉及一种基于AST的动态代码分析执行系统及执行方法。

技术介绍

[0002]现代软件系统规模越来越大,代码行数从数万或数十万行规模增长到数千万行;系统复杂度也越来越高,从传统的单机系统变为分布式系统,同构系统变为异构系统;而且软件开发的编程语言也从使用单一的语言发展为多种语言协同开发,这些变化都给代码的编写带来了巨大挑战。因此需要对代码进行动态分析以便写出更高性能、安全、无错误、合规的代码。作为代码调试的主要部分,动态代码分析可在任何情况下进行程序测试,从而无需人为地创建有可能产生无法预料的影响或错误的输入或情况,减少了测试的成本和时间,同时便于维护。
[0003]在不运行程序的前提下进行的代码分析称为静态代码分析,高覆盖性和高可用性是静态代码分析无法解决的硬伤,不但维护成本巨大,而且误报率和漏报率也高。静态代码分析的实现可以基于正则表达式的自动化分析,通过简单的关键字来匹配更多可能性的目标,之后再通过人工方式进行进一步的确认,保证高覆盖性本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于AST的动态代码分析执行系统,其特征在于,所述系统包括词法分析器、语法解析器、AST处理模块、代码执行模块和分析模块;所述词法分析器用于对程序源代码进行分析、拆分,得到不同种类的Token流,并将所述Token流传递给所述语法解析器;所述语法解析器针对所述Token流进行语法检查并将无错误的所述Token流翻译成内部数据结构,通过识别上下文创建抽象语法树并将所述抽象语法树传递给所述AST处理模块;所述AST处理模块用于以树的形式捕获输入的抽象语法树基本结构,自下而上创建树结构,省略不必要的语法细节,在验证抽象语法树过程中检查源代码是否满足代码标准的规则和准则;所述代码执行模块用于利用所述AST处理模块处理后的抽象语法树在上下文中编译和运行代码,由调用代码引起的对全局变量的任何更改都会反映在上下文对象中;所述分析模块用于对代码执行模块执行的代码进行分析,输出结果并显示诊断信息。2.根据权利要求1所述的一种基于AST的动态代码分析执行系统,其特征在于,所述词法分析器通过对输入的程序源代码进行预处理、超前搜索、状态转换、正则表达与正规集处理将输入的程序源代码划分为单独的Token流,识别Token流的类型,并将Token流一次一个地传递到分析的下一阶段。3.根据权利要求1所述的一种基于AST的动态代码分析执行系统,其特征在于,所述Token流包括常量、标识符、保留符号。4.根据权利要求1所述的一种基于AST的动态代码分析执行系统,其...

【专利技术属性】
技术研发人员:许黛妮
申请(专利权)人:深圳航天智慧城市系统技术研究院有限公司
类型:发明
国别省市:

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

1