【技术实现步骤摘要】
一种基于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的动态代码分析执行系统,其...
【专利技术属性】
技术研发人员:许黛妮,
申请(专利权)人:深圳航天智慧城市系统技术研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。