代码分析评估方法、装置、设备、介质和程序产品与流程

文档序号:34441276发布日期:2023-06-13 02:28阅读:29来源:国知局
代码分析评估方法、装置、设备、介质和程序产品与流程

本公开涉及信息安全,具体地涉及一种代码分析评估方法、装置、设备、介质和程序产品。


背景技术:

1、对于平台和/或系统的维护与开发而言,采用早期商业语言编写的程序代码引发了一系列的产业问题,为此,将代码库中的原程序语言所书写的代码改造为另一种程序语言所书写的代码是当今的一种技术趋势。

2、在代码的改造过程中,若不对原程序代码进行多维度的分析评估,将使得不同程序语言的代码的改造工作事倍功半,研发人员发现,现有技术中,对于代码的分析评估多是基于原程序代码本身完成的,这将导致,分析评估的效率不高且分析评估结果难以客观反映真实的代码情况。


技术实现思路

1、鉴于上述问题,本公开提供了提高代码改造效率的代码分析评估方法、装置、设备、介质和程序产品。

2、根据本公开的第一个方面,提供了一种代码分析评估方法,包括:获取原程序代码,所述原程序代码包括多个部;按照预设的解析器,分别解析所述原程序代码中的多个部,得到多个解析文件;以及按照预设的分析评估维度,分别分析评估所述多个解析文件,得到多个评估结果,所述多个评估结果至少包括变量影响范围、代码复杂度以及程序数据流关系。

3、根据本公开的实施例,其中,所述多个部包括标识部、环境部、数据部以及过程部,所述预设的解析器包括:程序解析器、语法解析器、数据结构解析器和数据库查询语句解析器,所述按照预设的解析器,分别解析所述原程序代码中的多个部,得到多个解析文件,包括:基于程序解析器对所述标识部进行解析,或者基于程序解析器对所述标识部和所述环境部进行解析,得到程序文件;基于所述数据结构解析器对所述数据部进行解析,得到数据文件;基于所述语法解析器对所述过程部进行解析,得到语法文件;以及基于所述数据库查询语句解析器分别对所述数据部和所述过程部进行解析,得到数据库查询语句解析结果,所述数据库查询语句解析结果是分别存储于所述程序文件、所述数据文件和所述语法文件中的。

4、根据本公开的实施例,其中,所述按照预设的分析评估维度,分别分析评估所述多个解析文件,得到多个评估结果,包括:对于所述变量影响范围,获取搜索关键字,所述搜索关键字包括程序关键字和变量关键字;基于所述程序关键字匹配所述程序文件;在所述程序文件匹配成功的情况下,确定当前的程序文件对应的程序为受影响程序;基于所述变量关键字匹配所述受影响程序对应的语法文件,得到第一变量集,所述第一变量集是语法逻辑层面的相关变量;以及基于所述变量关键字匹配所述受影响程序对应的数据文件,得到第二变量集,所述第二变量集是数据结构层面的相关变量。

5、根据本公开的实施例,其中,所述基于所述变量关键字匹配所述受影响程序对应的语法文件,得到第一变量集,包括:基于所述变量关键字作为搜索关键字,匹配所述语法文件中涉及所述搜索关键字的语法逻辑相关变量,得到第一变量集;重复执行以下操作,直至所述语法文件中涉及所述搜索关键字的语法逻辑相关变量匹配失败:将当前的所述第一变量集作为搜索关键字,匹配所述语法文件中在同一语法逻辑中,所述第一变量集的相关变量;在匹配成功的情况下,得到匹配结果;以及基于所述匹配结果更新所述第一变量集。

6、根据本公开的实施例,其中,所述基于所述变量关键字匹配所述受影响程序对应的数据文件,得到第二变量集,所述第二变量集是数据结构层面的相关变量,包括:基于所述变量关键字和所述第一变量集作为搜索关键字,匹配所述数据文件中涉及所述搜索关键字的数据结构相关变量,得到第二变量集;重复执行以下操作,直至所述数据文件中涉及所述搜索关键字的数据结构相关变量匹配失败:将当前的所述第二变量集作为搜索关键字,匹配所述数据文件中在同一数据结构中,所述第二变量集的相关变量;在匹配成功的情况下,得到匹配结果;以及基于所述匹配结果更新所述第二变量集。

7、根据本公开的实施例,其中,所述按照预设的分析评估维度,分别分析评估所述多个解析文件,得到多个评估结果,包括:对于所述代码复杂度,获取语法关键字和所述语法关键字对应的语法复杂度;基于所述语法关键字统计所述语法文件中语法数量;以及基于所述语法数量和所述语法复杂度计算所述代码复杂度。

8、根据本公开的实施例,其中,所述按照预设的分析评估维度,分别分析评估所述多个解析文件,得到多个评估结果,包括:对于所述程序数据流关系,遍历所述语法文件,得到跟踪字段;基于所述跟踪字段,查找涉及所述跟踪字段的语法逻辑;以及基于所述语法逻辑和所述跟踪字段,形成链表信息。

9、本公开的第二个方面,提供了一种代码分析评估装置,包括:获取模块,用于获取原程序代码,所述原程序代码包括多个部;解析模块,用于按照预设的解析器,分别解析所述原程序代码中的多个部,得到多个解析文件;以及分析评估模块,用于按照预设的分析评估维度,分别分析评估所述多个解析文件,得到多个评估结果,所述多个评估结果至少包括变量影响范围、代码复杂度以及程序数据流关系。

10、根据本公开的实施例,其中,所述多个部包括标识部、环境部、数据部以及过程部,所述预设的解析器包括:程序解析器、语法解析器、数据结构解析器和数据库查询语句解析器,所述解析模块,用于基于程序解析器对所述标识部进行解析,或者基于程序解析器对所述标识部和所述环境部进行解析,得到程序文件;基于所述数据结构解析器对所述数据部进行解析,得到数据文件;基于所述语法解析器对所述过程部进行解析,得到语法文件;以及基于所述数据库查询语句解析器分别对所述数据部和所述过程部进行解析,得到数据库查询语句解析结果,所述数据库查询语句解析结果是分别存储于所述程序文件、所述数据文件和所述语法文件中的。

11、根据本公开的实施例,其中,所述分析评估模块,用于对于所述变量影响范围,获取搜索关键字,所述搜索关键字包括程序关键字和变量关键字;基于所述程序关键字匹配所述程序文件;在所述程序文件匹配成功的情况下,确定当前的程序文件对应的程序为受影响程序;基于所述变量关键字匹配所述受影响程序对应的语法文件,得到第一变量集,所述第一变量集是语法逻辑层面的相关变量;以及基于所述变量关键字匹配所述受影响程序对应的数据文件,得到第二变量集,所述第二变量集是数据结构层面的相关变量。

12、根据本公开的实施例,其中所述分析评估模块,用于基于所述变量关键字作为搜索关键字,匹配所述语法文件中涉及所述搜索关键字的语法逻辑相关变量,得到第一变量集;重复执行以下操作,直至所述语法文件中涉及所述搜索关键字的语法逻辑相关变量匹配失败:将当前的所述第一变量集作为搜索关键字,匹配所述语法文件中在同一语法逻辑中,所述第一变量集的相关变量;在匹配成功的情况下,得到匹配结果;以及基于所述匹配结果更新所述第一变量集。

13、根据本公开的实施例,其中,所述分析评估模块,用于基于所述变量关键字和所述第一变量集作为搜索关键字,匹配所述数据文件中涉及所述搜索关键字的数据结构相关变量,得到第二变量集;重复执行以下操作,直至所述数据文件中涉及所述搜索关键字的数据结构相关变量匹配失败:将当前的所述第二变量集作为搜索关键字,匹配所述数据文件中在同一数据结构中,所述第二变量集的相关变量;在匹配成功的情况下,得到匹配结果;以及基于所述匹配结果更新所述第二变量集。

14、根据本公开的实施例,其中,所述分析评估模块,用于对于所述代码复杂度,获取语法关键字和所述语法关键字对应的语法复杂度;基于所述语法关键字统计所述语法文件中语法数量;以及基于所述语法数量和所述语法复杂度计算所述代码复杂度。

15、根据本公开的实施例,其中,所述分析评估模块,用于对于所述程序数据流关系,遍历所述语法文件,得到跟踪字段;基于所述跟踪字段,查找涉及所述跟踪字段的语法逻辑;以及基于所述语法逻辑和所述跟踪字段,形成链表信息。

16、本公开的第三个方面,提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述代码分析评估方法。

17、本公开的第四个方面,还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述代码分析评估方法。

18、本公开的第五个方面,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述代码分析评估方法。

19、在本公开的实施例中,将原程序代码按照不同部解析得到能够反映原程序代码逻辑的解析文件,进而通过对该解析文件进行分析评估,精简了待分析评估代码的代码量,避免冗余,可以极大提高代码分析评估的工作效率。并且,评估得到的变量影响范围、代码复杂度以及程序数据流关系可以很好地在代码转化前、代码转换中以及代码转换后起到作用,加快代码转换中的转换效率,增加转换后代码自身的可维护性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1