一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码差异检测方法及装置与流程

2022-02-20 01:00:10 来源:中国专利 TAG:


1.本发明涉及软件测试技术领域,特别是涉及一种代码差异检测方法及装置。


背景技术:

2.软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程,其中,软件系统或软件部分的实现,主要是依托代码。因此,在软件出现变化时,诸如功能变化或接口变化时,需要调整或重新编写代码,造成不同版本迭代或需求变更中的代码差异——1、在日常版本功能开发过程中,若存在多人协同开发的情况,此时对于代码改动的功能影响范围的边界会变得模糊,容易出现提测功能外的业务受影响的问题;2、代码版本迭代过程中经常存在开发自测的情况,但对这部分自测的功能,容易忽略可能对其他的业务功能造成的影响,导致上线后,用户或客户报障;3、日常开发提测的项目需求业务功能较多,负责测试的人员难以感知该功能的修改范围,容易出现漏测的情况。
3.因此,需要对代码的差异进行检测,判断差异的原因,给测试提供精准的参考信息。目前,传统代码差异检测方式是对比代码获取方法变更集,生成调用关系依赖树向上对代码的影响面进行追溯,找到受影响的代码和代码的影响面并可视化。然而,这种方式只能反映代码本身的差异,无法将代码差异的深层次表征反映出来,影响后续开发或测试的工作准确性和效率。


技术实现要素:

4.基于此,有必要针对传统的代码差异检测方式还存在的不足,提供一种代码差异检测方法及装置。
5.一种代码差异检测方法,包括步骤:监听代码的更新;比对更新前后的代码,以获得差异代码;寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重;根据差异代码预先关联的pm业务单号,查找业务描述文本信息;根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签;基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。
6.上述的代码差异检测方法,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建
立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
7.在其中一个实施例中,监听代码的更新的过程,包括步骤:通过开发持续集成工具监听代码的更新。
8.在其中一个实施例中,比对更新前后的代码,以获得差异代码的过程,包括步骤:比对更新前后的代码,整理出差异代码;解析差异代码的抽象语法树并分析代码结构,以展示差异代码的方法维度。
9.在其中一个实施例中,寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重的过程,包括步骤:确定差异代码的调用链路;根据调用链路确定相关的api路径;基于调用链路和api路径确定api路径的关联文本信息和方法修改权重。
10.在其中一个实施例中,根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签的过程,包括步骤:对业务描述文本信息和关联文本信息进行词性分析,在功能标签数据库中选取出特定功能标签。
11.在其中一个实施例中,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息的过程,包括步骤:基于pm业务单号对应的差异代码的api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。
12.在其中一个实施例中,还包括步骤:将代码差异检测结果信息进行可视化展示。
13.一种代码差异检测装置,包括:代码监听模块,用于监听代码的更新;代码比对模块,用于比对更新前后的代码,以获得差异代码;路径寻找模块,用于寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重;文本查找模块,用于根据差异代码预先关联的pm业务单号,查找业务描述文本信息;标签选取模块,用于根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签;信息确定模块,用于基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。
14.上述的代码差异检测装置,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
15.一种计算机存储介质,其上存储有计算机指令,计算机指令被处理器执行时实现上述任一实施例的代码差异检测方法。
16.上述的计算机存储介质,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
17.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任一实施例的代码差异检测方法。
18.上述的计算机设备,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1为一实施方式的代码差异检测方法流程图;图2为另一实施方式的代码差异检测方法流程图;图3为一实施方式的代码差异检测装置模块结构图;图4为一实施方式的计算机内部构造示意图。
具体实施方式
21.为了更好地理解本发明的目的、技术方案以及技术效果,以下结合附图和实施例对本发明进行进一步的讲解说明。同时声明,以下所描述的实施例仅用于解释本发明,并不用于限定本发明。
22.本发明实施例提供了一种代码差异检测方法。
23.图1为一实施方式的代码差异检测方法流程图,如图1所示,一实施方式的代码差异检测方法包括步骤s100至步骤s105:s100,监听代码的更新;s101,比对更新前后的代码,以获得差异代码;s102,寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修
改权重;s103,根据差异代码预先关联的pm业务单号,查找业务描述文本信息;s104,根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签;s105,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。
24.其中,代码的更新包括软件版本的迭代、业务功能的变化等,表征为代码的变化。通过监听代码的更新,在代码出现变化时捕获触发事件,以启动后续的代码处理。
25.在其中一个实施例中,图2为另一实施方式的代码差异检测方法流程图,如图2所示,步骤s100中监听代码的更新的过程,包括步骤s200:s200,通过开发持续集成工具监听代码的更新。
26.其中,通过预设程序监听代码的更新。通过预设程序与开发持续集成工具进行结合,持续集成来监听代码的更新,触发构建。基于此,实现对代码更新的实时监听,快速触发差异代码的确定。
27.作为一个较优的实施方式,开发持续集成工具选用jenkins。
28.通过比对更新前后的代码,确定新增/修改的代码作为差异代码。
29.在其中一个实施例中,如图2所示,步骤s101中比对更新前后的代码,以获得差异代码的过程,包括步骤s201和步骤s202:s201,比对更新前后的代码,整理出差异代码;s202,解析差异代码的抽象语法树并分析代码结构,以展示差异代码的方法维度。
30.其中,可根据代码版本分析工具,将更新前后的代码分支进行比对,将差异代码整理出来。作为一个较优的实施方式,通过jgit代码版本分析工具,将版本迭代的开发分支与线上当前分支进行比对,将java差异代码整理出来,并结合ast程序解析代码抽象语法树,分析代码结构,以代码的方法维度作为最小的粒度进行展示。
31.在差异代码的对外功能实现中,需要借助api路径,基于此在确定差异代码后,再寻找与差异代码相关的api路径。
32.在其中一个实施例中,如图2所示,步骤s102中寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重的过程,包括步骤s203至步骤s205:s203,确定差异代码的调用链路;s204,根据调用链路确定相关的api路径;s205,基于调用链路和api路径确定api路径的关联文本信息和方法修改权重。
33.作为一个较优的实施方式,通过javaasist去分析更新后代码所在的调用关系,并整理分析出一整条差异代码调用链路,根据调用链追溯并解析差异代码方法中存在的mapping类型标签,分析对外提供的api路径以及该api调用路径中涉及修改方法权重。
34.其中,mapping类型标签包括@deletemapping标签、@postmapping标签、@getmapping标签或@requestmapping标签等。
35.在其中一个实施例中,api路径的关联文本信息包括方法注释或代码提交注释。
36.进一步地,根据差异代码预先关联的pm(product manager 项目管理)业务单号,查找业务描述文本信息。其中,通过预先关联,在差异代码被提交的过程中,需要同步提交关联的pm业务单号。
37.根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。其中,功能标签数据库预先存储有功能标签,根据文字识别或映射等关系,从业务描述文本信息和关联文本信息中选取对应的功能标签,作为特定功能标签。其中,功能标签用于表征代码的功能、业务或产品等直接信息,用于为相关开发人员或测试人员提供参考。
38.在其中一个实施例中,如图2所示,步骤s104中根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签的过程,包括步骤s206:s206,对业务描述文本信息和关联文本信息进行词性分析,在功能标签数据库中选取出特定功能标签。
39.在其中一个实施例中,以hanlp(han language processing 汉语言处理包)为基础,开发一套解析语言文本,并反馈功能标签数据库中的功能标签的程序。分别以java代码方法注释、代码提交时的文本注释以及代码提交时关联的pm业务单号所涉及的业务内容三个维度进行分析,确定代码影响范围涉及的功能的特定功能标签,以提高反馈准确性。
40.基于此,根据api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。相关开发或测试人员可根据代码差异检测结果信息,以pm业务系统为核心汇总,将关注点聚焦在企业对外提供服务的api路径上,对每个pm业务单对应的差异代码涉及的提供服务api路径有一个清晰明确的把握,保障了对外服务api的功能质量。同时,将差异代码涉及的改动与功能标签数据库进行关联,给业务功能影响范围的指引,在开发测试阶段锁定测试范围和关联工单,有目标有针对性的对业务进行测试与回归,提高测试质量与效率,并可对接其他系统进行其他的一些操作,如功能自动化测试、代码测试覆盖率等。
41.同时,代码差异检测结果信息可用于引导pm业务单对应的相关产品/开发/测试人员关注业务功能中可能存在的一些忽略/遗漏的问题,提高业务聚焦度。同时通过代码差异检测结果信息内的方法修改权重,突出修改权重大的api路径,以便于进行重点测试,降低api功能风险。
42.在其中一个实施例中,步骤s105中基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息的过程,包括步骤s207:s207,基于pm业务单号对应的差异代码的api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。
43.以pm业务单号为单位,汇总api路径、方法修改权重和特定功能标签。基于此,根据api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。相关开发或测试人员可根据代码差异检测结果信息,以pm业务系统为核心汇总,将关注点聚焦在企业对外提供服务的api路径上,对每个pm业务单对应的差异代码涉及的提供服务api路径有一个清晰明确的把握,保障了对外服务api的功能质量。同时,将差异代码涉及的改动与功能标签数据库进行关联,给业务功能影响范围的指引,在开发测试阶段锁定测试范围和关联工单,有目标有针对性的对业务进行测试与回归,提高测试质量与效率,并可对接其他系统进行其他的一些操作,如功能自动化测试、代码测试覆盖率等。
44.同时,代码差异检测结果信息可用于引导pm业务单对应的相关产品/开发/测试人员关注业务功能中可能存在的一些忽略/遗漏的问题,提高业务聚焦度。同时通过代码差异检测结果信息内的方法修改权重,突出修改权重大的api路径,以便于进行重点测试,降低api功能风险。
45.在其中一个实施例中,如图2所示,另一实施方式的代码差异检测方法还包括步骤s208:s208,将代码差异检测结果信息进行可视化展示。
46.将代码差异检测结果信息通过文字、音频或图像等方式进行可视化展示,便于相关测试或开发人员快速了解代码变化的深层次表征。
47.上述任一实施例的代码差异检测方法,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
48.本发明实施例还提供了一种代码差异检测装置。
49.图3为一实施方式的代码差异检测装置模块结构图,如图3所示,一实施方式的代码差异检测装置包括:代码监听模块100,用于监听代码的更新;代码比对模块101,用于比对更新前后的代码,以获得差异代码;路径寻找模块102,用于寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重;文本查找模块103,用于根据差异代码预先关联的pm业务单号,查找业务描述文本信息;标签选取模块104,用于根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签;信息确定模块105,用于基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。
50.上述的代码差异检测装置,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
51.本发明实施例还提供了一种计算机存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述任一实施例的代码差异检测方法。
52.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非
易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
53.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、终端、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、ram、rom、磁碟或者光盘等各种可以存储程序代码的介质。
54.与上述的计算机存储介质对应的是,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现如上述各实施例中的任意一种代码差异检测方法。
55.该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码差异检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
56.上述计算机设备,在监听到代码的更新后,比对更新前后的代码,以获得差异代码。寻找与差异代码相关的api路径,并确定api路径的关联文本信息和方法修改权重,并根据差异代码预先关联的pm业务单号,查找业务描述文本信息,再根据业务描述文本信息和关联文本信息,在功能标签数据库中选取出特定功能标签。最后,基于api路径、方法修改权重和特定功能标签,确定代码差异检测结果信息。基于此,代码的相关开发人员和测试人员可根据代码差异检测结果信息直观了解代码的更新变化,并与代码相关业务功能建立关联,确定代码变化的深层次表征,为开发工作或测试工作提供准确参考以提高效率。
57.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
58.以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献