System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于软件代码处理领域,特别是涉及一种调用链路变更分析方法、装置、设备及介质。
技术介绍
1、随着计算机技术的快速发展,项目迭代越来越快,计算机代码也要根据项目需求不断进行迭代和优化。例如,通过调用链分析技术监控微服务架构中的服务,有利于获取当前运行情况,定位问题并解决分布式网络下服务交互追踪的问题。
2、特别是在android调用链分析技术中,通过字节码解析工具soot接收java或android字节码并输出转换后的字节码、中间代码jimple或控制流图(cfg)等。然而,使用soot将字节码和源码先转换为中间代码,再进行分析、优化和标记等,一方面,追踪方法之间的调用关系较为复杂繁琐;另一方面,无法识别出同一应用在不同版本间方法调用链的变更,因此,亟须一种调用链路变更分析方案来解决上述技术问题。
技术实现思路
1、鉴于以上所述现有技术的缺点,本申请的目的在于提供一种调用链路变更分析方法、装置、设备及介质,用于解决现有技术调用链路变更分析时,无法识别不同版本之间调用链路差异的问题。
2、为实现上述目的及其他相关目的,本申请的第一方面提供一种调用链路变更分析方法,包括:获取至少两个版本应用程序所对应的方法调用关系与方法定义信息;对不同版本所对应的方法调用关系进行差集操作,确定增减方法集合;对不同版本所对应的源码进行差异比较,确定代码变更信息,其中,所述应用程序携带有所述源码;基于所述代码变更信息在最新版本对应的所述方法定义信息中进行检索,确定变更方法集合,
3、在第一方面的一些实施例中,获取至少两个版本应用程序所对应的方法调用关系与方法定义信息,包括:获取应用程序的安装包文件,并对所述安装包文件进行静态代码分析,获得所述应用程序的方法调用关系和方法首指令码行号;对所述源码进行词法分析,获得初始的方法定义信息;根据所述方法首指令码行号对所述初始的方法定义信息进行校正,确定最终的方法定义信息,以得到至少两个版本所对应的方法调用关系与方法定义信息。
4、在第一方面的一些实施例中,所述方法首指令码行号包括预设格式的方法名与首指令码行号;所述初始的方法定义信息包括非预设格式的方法名、开始行与结束行;根据所述方法首指令码行号对所述初始的方法定义信息进行校正,确定最终的方法定义信息,包括:根据所述初始的方法定义信息中的所述开始行与所述结束行确定起始行号区间;结合所述预设格式的方法名、所述首指令码行号与所述起始行号区间对所述非预设格式的方法名进行校正,确定最终的方法定义信息。
5、在第一方面的一些实施例中,获取应用程序的安装包文件,并对所述安装包文件进行静态代码分析,获得所述应用程序的方法调用关系和方法首指令码行号,包括:若所述应用程序为安卓应用,将所述安卓应用的安装包文件转换成jar格式的压缩文件;对所述压缩文件进行静态代码分析,提取调用链,获得所述应用程序的方法调用关系,以及提取所述源码与字节码的映射关系,获得所述应用程序的方法首指令码行号。
6、在第一方面的一些实施例中,对所述源码进行词法分析,获得初始的方法定义信息,包括:若所述应用程序为安卓应用,获取所述安卓应用对应为java格式的第一源码与对应为kotlin格式的第二源码;创建词法分析器来分析所述第一源码与所述第二源码,确定单词集合;依次对所述单词集合进行语法分析、语义分析,获得初始的方法定义信息。
7、在第一方面的一些实施例中,对不同版本所对应的方法调用关系进行差集操作,确定增减方法集合,包括:将至少一个版本作为历史版本,通过所述历史版本所对应的方法调用关系与所述最新版本所对应的方法调用关系进行差集操作;若所述差集包括所述历史版本所对应的方法调用关系相对于所述最新版本所对应的方法调用关系多,则确定所述最新版本所对应的方法调用关系减少;若所述差集包括所述历史版本所对应的方法调用关系相对于所述最新版本所对应的方法调用关系少,则确定所述最新版本所对应的方法调用关系增加;若所述差集包括所述历史版本所对应的方法调用关系相对于所述最新版本所对应的方法调用关系变更,则确定所述最新版本所对应的方法调用关系修改;根据所述最新版本所对应的方法调用关系减少、增加或修改中的至少之一,确定增减方法集合。
8、在第一方面的一些实施例中,对不同版本所对应的源码进行差异比较,确定代码变更信息,包括:将至少一个版本作为历史版本,通过所述历史版本所对应的源码与所述最新版本所对应的源码进行差异比较;若比较结果包括所述历史版本所对应的源码相对于所述最新版本所对应的源码多,则确定所述最新版本所对应的源码减少;若比较结果包括所述历史版本所对应的源码相对于所述最新版本所对应的源码少,则确定所述最新版本所对应的源码增加;若比较结果包括所述历史版本所对应的源码相对于所述最新版本所对应的源码变更,则确定所述最新版本所对应的源码修改;根据所述最新版本所对应的源码减少、增加或修改中至少之一,确定代码变更信息。
9、在第一方面的一些实施例中,基于所述代码变更信息在最新版本对应的所述方法定义信息中进行检索,确定变更方法集合,包括:基于所述代码变更信息,确定所述代码变更信息在所述方法定义信息中源文件对应的变更行号,并确定所述变更行号所属的变更方法,通过汇聚各个所属的变更方法,确定变更方法集合。
10、在第一方面的一些实施例中,根据所述增减方法集合和所述变更方法集合标识最新版本对应的所述方法调用关系中的变更,确定调用链路变更集合,包括:通过所述方法调用关系的所述增减方法集合对最新版本对应的所述方法调用关系中的变更部分进行标识;同时,通过所述源码的所述变更方法集合对最新版本对应的所述方法调用关系中的变更部分进行标识;通过组装已标识最新版本对应的所述方法调用关系,确定调用链路变更集合。
11、本申请的第二方面提供一种调用链路变更分析装置,包括:获取模块,用于获取至少两个版本应用程序所对应的方法调用关系与方法定义信息;差集操作模块,用于对不同版本所对应的方法调用关系进行差集操作,确定增减方法集合;差异比较模块,用于对不同版本所对应的源码进行差异比较,确定代码变更信息,其中,所述应用程序携带有所述源码;代码变更确定模块,基于所述代码变更信息在最新版本对应的所述方法定义信息中进行检索,确定变更方法集合,其中,至少两个所述版本中版本号最新的为最新版本;链路变更确定模块,用于根据所述增减方法集合和所述变更方法集合标识最新版本对应的所述方法调用关系中的变更,确定调用链路变更集合。
12、本申请的第三方面提供一种调用链路变更分析设备,包括:一个或多个处理装置;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现上述的调用链路变更分析方法。
13、本申请的第四方面提供一种计算机可读本文档来自技高网...
【技术保护点】
1.一种调用链路变更分析方法,其特征在于,包括:
2.根据权利要求1所述的调用链路变更分析方法,其特征在于,获取至少两个版本应用程序所对应的方法调用关系与方法定义信息,包括:
3.根据权利要求2所述的调用链路变更分析方法,其特征在于,所述方法首指令码行号包括预设格式的方法名与首指令码行号;所述初始的方法定义信息包括非预设格式的方法名、开始行与结束行;
4.根据权利要求2所述的调用链路变更分析方法,其特征在于,获取应用程序的安装包文件,并对所述安装包文件进行静态代码分析,获得所述应用程序的方法调用关系和方法首指令码行号,包括:
5.根据权利要求2所述的调用链路变更分析方法,其特征在于,对所述源码进行词法分析,获得初始的方法定义信息,包括:
6.根据权利要求1所述的调用链路变更分析方法,其特征在于,对不同版本所对应的方法调用关系进行差集操作,确定增减方法集合,包括:
7.根据权利要求1所述的调用链路变更分析方法,其特征在于,对不同版本所对应的源码进行差异比较,确定代码变更信息,包括:
8.根据权利要求
9.根据权利要求1所述的调用链路变更分析方法,其特征在于,根据所述增减方法集合和所述变更方法集合标识最新版本对应的所述方法调用关系中的变更,确定调用链路变更集合,包括:
10.一种调用链路变更分析装置,其特征在于,包括:
11.一种电子设备,其特征在于,包括:一个或多个处理装置;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现权利要求1至9中任一所述的调用链路变更分析方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序用于使计算机执行权利要求1至9任一所述的调用链路变更分析方法。
...【技术特征摘要】
1.一种调用链路变更分析方法,其特征在于,包括:
2.根据权利要求1所述的调用链路变更分析方法,其特征在于,获取至少两个版本应用程序所对应的方法调用关系与方法定义信息,包括:
3.根据权利要求2所述的调用链路变更分析方法,其特征在于,所述方法首指令码行号包括预设格式的方法名与首指令码行号;所述初始的方法定义信息包括非预设格式的方法名、开始行与结束行;
4.根据权利要求2所述的调用链路变更分析方法,其特征在于,获取应用程序的安装包文件,并对所述安装包文件进行静态代码分析,获得所述应用程序的方法调用关系和方法首指令码行号,包括:
5.根据权利要求2所述的调用链路变更分析方法,其特征在于,对所述源码进行词法分析,获得初始的方法定义信息,包括:
6.根据权利要求1所述的调用链路变更分析方法,其特征在于,对不同版本所对应的方法调用关系进行差集操作,确定增减方法集合,包括:
7.根据权利要求1所述的调用链路...
【专利技术属性】
技术研发人员:徐卓毅,
申请(专利权)人:深圳依时货拉拉科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。