一种代码分析方法技术

技术编号:39725425 阅读:7 留言:0更新日期:2023-12-17 23:30
本发明专利技术涉及一种代码分析方法

【技术实现步骤摘要】
一种代码分析方法、系统及可读存储介质


[0001]本专利技术涉及程序分析
,尤其是涉及一种代码分析方法

系统及可读存储介质


技术介绍

[0002]随着计算机技术的快速发展,现代应用系统的代码复杂度越来越高,同时公司中大型的开发项目往往由多人合作完成,这也进一步增加了项目代码的复杂度,造成可读性和可靠性的下降,也给新入职的人员理解项目代码提高了一定的时间成本

在对复杂系统进行变更的时候也需要进行大量的验证来保证不出问题,因此对于复杂的系统需要代码分析技术来帮助开发人员更好更方便的理解代码逻辑,更好地识别代码中的问题,并减少代码错误和漏洞

通过代码分析技术,程序员可以更好地了解代码的工作原理,从而更容易发现和解决问题

[0003]现有的技术主要是基于抽象语法树,反编译技术,知识库及规则匹配技术来实现依赖调用的可视化展示和接口扫描

然而,基于规则和抽象语法树并不能准确的得到调用方法之间的依赖关系,进而造成代码可靠性的降低以及工程能效的降低


技术实现思路

[0004]为了解决上述问题,本专利技术提供了一种代码分析方法

系统及可读存储介质,用来帮助开发人员更好更方便的理解代码逻辑,更好地识别代码中的问题,并减少代码错误和漏洞,进而提高代码的可靠性和工程能效

[0005]第一方面,本专利技术提供的一种代码分析方法,采用如下的技术方案:一种代码分析方法,包括:获取目标代码并利用解析工具将所述目标代码解析为抽象语法树;基于所述抽象语法树构建控制流图;对所述控制流图的数据流进行递归分析并构建程序依赖图;基于所述程序依赖图将所述目标代码转换为上下文无关文法;通过分析所述上下文无关文法跟踪所述目标代码的执行过程,生成方法调用矩阵,从而得到静态调用链路图并实现目标代码的分析

[0006]进一步的,上述一种代码分析方法中,还包括:对所述目标代码进行动态调用链路追踪得到动态调用链路图和调用关系图;将所述静态调用链路图与所述动态调用链路图进行叠加处理,获得综合调用链路图

[0007]进一步的,上述一种代码分析方法中,将所述静态调用链路图与所述动态调用链路图进行叠加处理,获得综合调用链路图,包括:深度遍历所述动态调用链路图上的每个节点;将各所述节点与所述静态调用链路图中的每个节点做叠加处理得到综合调用链
路图

[0008]进一步的,上述一种代码分析方法中,还包括:对所述静态调用链路进行可视化处理并输出

[0009]进一步的,上述一种代码分析方法中,所述对所述静态调用链路进行可视化处理并输出,包括:遍历所述静态调用链路中的每个调用链路;采集所述调用链路中每个节点的对应关系,以及各节点的属性信息,写入
Neo4j
;在所述
Neo4j
基于所述对应关系以及所述属性信息完成所述静态调用链路的可视化

[0010]进一步的,上述一种代码分析方法中,还包括:使用代码审计工具对目标代码进行漏洞分析以确定所述目标代码中是否存在异常问题;对漏洞分析结果进行解析并标记为异常方法以便于可视化输出

[0011]进一步的,上述一种代码分析方法中,所述使用代码审计工具对目标代码进行漏洞分析,包括:对所述控制流图的数据流进行分析;和
/
或,对所述目标代码中的指针进行分析;和
/
或,对所述目标代码进行路径求解

[0012]进一步的,上述一种代码分析方法中,所述基于所述抽象语法树构建控制流图,包括:在所述抽象语法树中创建一个根节点;使用递归下降算法,从根节点开始,逐个处理每个语法节点;根据各所述语法节点的类型和性质,连接各所述语法节点,构建所述控制流图

[0013]第二方面,本专利技术提供的一种代码分析系统,采用如下的技术方案:一种代码分析系统,包括静态调用链路获取模块,所述静态调用链路获取模块包括:抽象语法树解析单元,用于获取目标代码并利用解析工具将所述目标代码解析为抽象语法树
;
控制流程图构建单元,用于基于所述抽象语法树构建控制流图;程序依赖图构建单元,用于对所述控制流图的数据流进行递归分析并构建程序依赖图;以及静态调用链路生成单元,用于基于所述程序依赖图将所述目标代码转换为上下文无关文法;并通过分析所述上下文无关文法跟踪所述目标代码的执行过程,生成方法调用矩阵,从而得到静态调用链路图并实现目标代码的分析

[0014]进一步的,上述一种代码分析系统中,还包括:动态调用链路获取模块,用于对所述目标代码进行动态调用链路追踪得到动态调用链路图和调用关系图;综合调用链路生成模块,用于将所述静态调用链路图与所述动态调用链路图进行叠加处理,获得综合调用链路图

[0015]进一步的,上述一种代码分析系统中,还包括:可视化模块,用于对所述静态调用链路进行可视化处理并输出

[0016]进一步的,上述一种代码分析系统中,还包括:代码审计模块,用于使用代码审计工具对目标代码进行漏洞分析以确定所述目标代码中是否存在异常问题;并对漏洞分析结果进行解析并标记为异常方法以便于可视化输出

[0017]第三方面,本专利技术提供的一种可读存储介质,采用如下的技术方案:一种可读存储介质,所述可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如上述第一方面中任一项所述的一种代码分析方法

[0018]综上所述,本专利技术包括以下至少一种有益技术效果:
1.
本专利技术通过构建抽象语法树

控制流图和程序依赖图等多种分析手段,能够全面分析目标代码的结构和执行过程,帮助开发人员深入了解代码的组织和调用关系;
2.
本专利技术不仅支持对代码的静态分析,还通过动态调用链路追踪获得动态执行信息,并将两者综合,使得代码分析结果更加准确和全面;
3.
本专利技术可对目标代码进行审计,将漏洞分析结果与静态调用链路图或综合调用链路图相结合,将存在漏洞的方法标记为异常方法,有助于快速定位漏洞所在位置

附图说明
[0019]图1是本专利技术一种代码分析方法的一个实施例的流程框图

[0020]图2是本专利技术一种代码分析方法的一个实施例的流程图

[0021]图3是本专利技术一种代码分析方法的另一实施例的流程框图

[0022]图4是本专利技术一种代码分析方法的另一实施例的流程框图

[0023]图5是本专利技术一种代码分析方法的另一实施例的流程图

[0024]图6是本专利技术一种代码分析方法的另一实施例的流程框图

[0025]图7是本专利技术一种代码分析方法的另一实施例的流程框图
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种代码分析方法,其特征在于,包括:获取目标代码并利用解析工具将所述目标代码解析为抽象语法树;基于所述抽象语法树构建控制流图;对所述控制流图的数据流进行递归分析并构建程序依赖图;基于所述程序依赖图将所述目标代码转换为上下文无关文法;通过分析所述上下文无关文法跟踪所述目标代码的执行过程,生成方法调用矩阵,从而得到静态调用链路图并实现目标代码的分析
。2.
根据权利要求1所述的一种代码分析方法,其特征在于,所述方法还包括:对所述目标代码进行动态调用链路追踪得到动态调用链路图和调用关系图;将所述静态调用链路图与所述动态调用链路图进行叠加处理,获得综合调用链路图
。3.
根据权利要求2所述的一种代码分析方法,其特征在于,将所述静态调用链路图与所述动态调用链路图进行叠加处理,获得综合调用链路图,包括:深度遍历所述动态调用链路图上的每个节点;将各所述节点与所述静态调用链路图中的每个节点做叠加处理得到综合调用链路图
。4.
根据权利要求1所述的一种代码分析方法,其特征在于:所述方法还包括:对所述静态调用链路进行可视化处理并输出
。5.
根据权利要求4所述的一种代码分析方法,其特征在于,所述对所述静态调用链路进行可视化处理并输出,包括:遍历所述静态调用链路中的每个调用链路;采集所述调用链路中每个节点的对应关系,以及各节点的属性信息,写入
Neo4j
;在所述
Neo4j
基于所述对应关系以及所述属性信息完成所述静态调用链路的可视化
。6.
根据权利要求1所述的一种代码分析方法,其特征在于,所述方法还包括:使用代码审计工具对目标代码进行漏洞分析以确定所述目标代码中是否存在异常问题;对漏洞分析结果进行解析并标记为异常方法以便于可视化输出
。7.
根据权利要求6所述的一种代码分析方法,其特征在于,所述使用代码审计工具对目标代码进行漏洞分析,包括:对所述控制流图的数据流进行分析;和
/
或,对所述目...

【专利技术属性】
技术研发人员:张远吴延峰
申请(专利权)人:零束科技有限公司
类型:发明
国别省市:

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

1