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

文档序号:35102542发布日期:2023-08-10 10:06阅读:63来源:国知局
代码分析方法、装置、设备、介质和程序产品与流程

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


背景技术:

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