代码改动影响范围的评估方法、装置、设备及存储介质制造方法及图纸

技术编号:34743250 阅读:24 留言:0更新日期:2022-08-31 18:36
本公开提供一种代码改动影响范围的评估方法、装置、设备及存储介质。该方法包括:从分布式版本控制系统中拉取代码分支的分支代码,比较代码分支之间的代码差异,确定改动的代码文件并生成代码文件改动列表;利用代码解析工具遍历代码文件,生成待评估的方法签名集合;解析源文件中的方法调用,当调用的方法在待评估的方法签名集合中时,记录方法调用关系;对待评估的方法签名集合进行更新,对所有的方法调用进行递归查找,直至没有新的调用方法对待评估的方法签名集合进行更新时,根据所有方法调用关系评估代码改动影响范围。本公开能够自动对改动过的代码文件进行解析,降低评估耗时,提升评估准确性和效率,有效避免存在调用关系时的遗漏。关系时的遗漏。关系时的遗漏。

【技术实现步骤摘要】
代码改动影响范围的评估方法、装置、设备及存储介质


[0001]本公开涉及计算机
,尤其涉及一种代码改动影响范围的评估方法、装置、设备及存储介质。

技术介绍

[0002]在业务系统持续迭代升级过程中,不可避免的需要对原有代码进行修改,由于部分代码在修改后可能会对其他的代码造成影响,因此需要开发人员对代码改动可能影响的范围进行评估和回归测试,以确保代码的正确性。
[0003]现有技术中,测试人员分析代码改动所带来的影响一般依靠人工分析的方法进行评估,目前实际项目中缺乏支持对代码改动的影响范围进行自动分析的工具,更多的是依赖流程(如设计、评审、代码审查等)以及个人的能力和经验,但是由于人员流失,新人对业务背景和场景不熟悉,特别是修改公共代码时,人工分析方式容易造成影响范围评估不准确和产生遗漏。因此,导致现有的评估方法存在无法自动评估代码改动的影响范围,人工评估耗时比较长,对影响范围的评估不准确,降低对影响范围的评估效率,存在调用关系时的遗漏等问题。

技术实现思路

[0004]有鉴于此,本公开实施例提供了一种代码改动影响范围的评估方法、装置、设备及存储介质,以解决现有技术存在的无法自动评估代码改动的影响范围,人工评估耗时比较长,对影响范围的评估不准确,降低对影响范围的评估效率,存在调用关系时的遗漏的问题。
[0005]本公开实施例的第一方面,提供了一种代码改动影响范围的评估方法,包括:确定需要评估的代码分支,并从分布式版本控制系统中拉取代码分支对应的分支代码,其中,代码分支包括第一代码分支和第二代码分支;调用代码比较命令,比较第一代码分支与第二代码分支之间的代码差异,基于代码差异确定发生改动的代码文件,并生成代码文件改动列表;利用代码解析工具遍历代码文件改动列表中的所有代码文件,并生成待评估的方法签名集合,对项目中的源文件进行遍历,以便解析源文件中的每个方法调用,当调用的方法在待评估的方法签名集合中时,记录方法调用关系;基于方法调用关系及调用的方法,对待评估的方法签名集合进行更新,依次对所有的方法调用进行递归查找,直至没有新的调用方法对待评估的方法签名集合进行更新时,根据记录的所有方法调用关系对代码改动影响范围进行评估。
[0006]本公开实施例的第二方面,提供了一种代码改动影响范围的评估装置,包括:拉取模块,被配置为确定需要评估的代码分支,并从分布式版本控制系统中拉取代码分支对应的分支代码,其中,代码分支包括第一代码分支和第二代码分支;比较模块,被配置为调用代码比较命令,比较第一代码分支与第二代码分支之间的代码差异,基于代码差异确定发生改动的代码文件,并生成代码文件改动列表;解析模块,被配置为利用代码解析工具遍历
代码文件改动列表中的所有代码文件,并生成待评估的方法签名集合,对项目中的源文件进行遍历,以便解析源文件中的每个方法调用,当调用的方法在待评估的方法签名集合中时,记录方法调用关系;评估模块,被配置为基于方法调用关系及调用的方法,对待评估的方法签名集合进行更新,依次对所有的方法调用进行递归查找,直至没有新的调用方法对待评估的方法签名集合进行更新时,根据记录的所有方法调用关系对代码改动影响范围进行评估。
[0007]本公开实施例的第三方面,提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述方法的步骤。
[0008]本公开实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
[0009]本公开实施例采用的上述至少一个技术方案能够达到以下有益效果:
[0010]通过确定需要评估的代码分支,并从分布式版本控制系统中拉取代码分支对应的分支代码,其中,代码分支包括第一代码分支和第二代码分支;调用代码比较命令,比较第一代码分支与第二代码分支之间的代码差异,基于代码差异确定发生改动的代码文件,并生成代码文件改动列表;利用代码解析工具遍历代码文件改动列表中的所有代码文件,并生成待评估的方法签名集合,对项目中的源文件进行遍历,以便解析源文件中的每个方法调用,当调用的方法在待评估的方法签名集合中时,记录方法调用关系;基于方法调用关系及调用的方法,对待评估的方法签名集合进行更新,依次对所有的方法调用进行递归查找,直至没有新的调用方法对待评估的方法签名集合进行更新时,根据记录的所有方法调用关系对代码改动影响范围进行评估。本公开能够自动对改动过的代码文件进行解析,降低评估代码改动影响范围的耗时,提升影响范围评估的准确性和效率,有效避免存在调用关系时的遗漏。
附图说明
[0011]为了更清楚地说明本公开实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0012]图1是本公开实施例提供的代码改动影响范围的评估方法的整体处理流程示意图;
[0013]图2是本公开实施例提供的代码改动影响范围的评估方法的流程示意图;
[0014]图3是本公开实施例提供的代码改动影响范围的评估装置的结构示意图;
[0015]图4是本公开实施例提供的电子设备的结构示意图。
具体实施方式
[0016]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本公开实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本公开。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本公开的描述。
[0017]如前文
技术介绍
的内容,在业务系统的软件开发的过程中,开发人员需要根据软件开发的需要对软件代码进行修改。部分代码在变更后可能会对其他的代码部分造成影响,开发人员需要对代码变更影响范围进行测试,以确保代码的正确性。在很多场景下,研发人员需要对现有代码进行变更,但是由于业务系统本身越来越复杂,而且很多代码之间还具有调用与被调用的关系,导致研发人员在变更代码后不能确定修改内容是否会对软件其他部分造成影响,因此需要测试人员考虑代码变更的影响范围并进行回归测试,如果测试不全面,可能导致系统上线后出现问题。现有技术中,对代码改动影响范围的评估一般采用以下几种方式,具体描述如下:
[0018]第一种方式,通过Jacoco等工具,统计代码测试覆盖率,但覆盖率是基于代码是否被执行过,并不能体现出和代码改动之间的关系,只能提供一个参考。
[0019]第二种方式,通过IDE提供的代码引用功能,查找某个方法或者变量被哪些地方引用,但是这种方式有几个缺点:1)只能手动进行查找,改动多的话很繁琐,而且会有遗漏;2)无法递归展示多级的调用关系,比如改动了A类的am方法,通过引用功能,可以查找到B类的bm和C类的cm会受影响,但是不能递归的查找到bm和cm会影响到的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码改动影响范围的评估方法,其特征在于,包括:确定需要评估的代码分支,并从分布式版本控制系统中拉取所述代码分支对应的分支代码,其中,所述代码分支包括第一代码分支和第二代码分支;调用代码比较命令,比较所述第一代码分支与第二代码分支之间的代码差异,基于所述代码差异确定发生改动的代码文件,并生成代码文件改动列表;利用代码解析工具遍历所述代码文件改动列表中的所有代码文件,并生成待评估的方法签名集合,对项目中的源文件进行遍历,以便解析所述源文件中的每个方法调用,当调用的方法在所述待评估的方法签名集合中时,记录方法调用关系;基于所述方法调用关系及所述调用的方法,对所述待评估的方法签名集合进行更新,依次对所有的方法调用进行递归查找,直至没有新的调用方法对所述待评估的方法签名集合进行更新时,根据记录的所有方法调用关系对代码改动影响范围进行评估。2.根据权利要求1所述的方法,其特征在于,所述确定需要评估的代码分支,并从分布式版本控制系统中拉取所述代码分支对应的分支代码,包括:基于所述分布式版本控制系统中的代码提交记录,确定需要评估的代码分支,并利用所述代码解析工具从所述分布式版本控制系统中拉取所述代码分支对应的分支代码,其中,所述第一代码分支包括特性分支,所述第二代码分支包括主分支。3.根据权利要求2所述的方法,其特征在于,所述调用代码比较命令,比较所述第一代码分支与第二代码分支之间的代码差异,基于所述代码差异确定发生改动的代码文件,并生成代码文件改动列表,包括:调用所述分布式版本控制系统中的diff命令,通过diff命令对所述特性分支与所述主分支之间进行比较,确定所述特性分支与所述主分支之间的代码差异,基于所述代码差异确定涉及改动的所有代码文件的改动位置,根据所述代码文件的改动位置生成代码文件改动列表,其中,所述代码文件改动列表中包含所述代码文件及所述代码文件对应的行号。4.根据权利要求1所述的方法,其特征在于,在所述利用代码解析工具遍历所述代码文件改动列表中的所有代码文件之前,所述方法还包括:对所述代码解析工具的配置进行初始化操作,通过MVN项目管理工具获取所述项目对应的所有依赖项,将所述依赖项设置到所述代码解析工具中,其中,所述代码解析工具采用JavaParser工具。5.根据权利要求1所述的方法,其特征在于,所述利用代码解析工具遍历所述代码文件改动列表中的所有代码文件,并生成待评估的方法签名集合,包括:利用所述代码解析工具对每个所述代码文件中的方法进行解析,得到每个所述方法的签名和方法体对应的开始位置及结束位置,根据代码提交记录以及所...

【专利技术属性】
技术研发人员:赵安琪程雪梅汪敏炜邢亮
申请(专利权)人:深圳集智数字科技有限公司
类型:发明
国别省市:

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

1