CN117667648A - 代码分支的合线检测方法、装置、计算机设备和存储介质 - Google Patents

代码分支的合线检测方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117667648A
CN117667648A CN202211042728.1A CN202211042728A CN117667648A CN 117667648 A CN117667648 A CN 117667648A CN 202211042728 A CN202211042728 A CN 202211042728A CN 117667648 A CN117667648 A CN 117667648A
Authority
CN
China
Prior art keywords
line
code
branch
file
deleted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211042728.1A
Other languages
English (en)
Inventor
龚博文
龚子霄
文骁一
邱广
李子轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cyber Tianjin Co Ltd
Original Assignee
Tencent Cyber Tianjin Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Cyber Tianjin Co Ltd filed Critical Tencent Cyber Tianjin Co Ltd
Priority to CN202211042728.1A priority Critical patent/CN117667648A/zh
Publication of CN117667648A publication Critical patent/CN117667648A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种代码分支的合线检测方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:获取待合并代码分支的差异信息,根据差异信息确定待合并代码分支的文件类型。若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行。基于第一删除行和第二删除行获得完整删除行,根据完整删除行对新增行进行筛选,筛选出目标新增行,基于目标新增行和第一分支的分支代码文件进行合线检测,生成合线检测结果。采用本方法根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了对分支合线的检测效率和准确度。

Description

代码分支的合线检测方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种代码分支的合线检测方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,以及各类应用程序的广泛使用,对于应用程序的功能、性能要求也逐步提升,为满足不同使用对象的实际需求,需要对应用程序进行开发、升级以及更新等处理。而在应用程序的开发过程中,为提升开发效率,通常需要多个项目并行开发,即采用多代码分支的并行开发方式。
由于项目开发所采用的多代码分支的并行开发方式,在其中某一条分支开发完成时,需要将开发完成的分支的代码和资源融合至另外的分支,完成代码分支的合线,以实现代码和资源的整合。为了避免程序上线发布以及后续使用时,出现运行错误、功能缺失等问题,在程序程序代码编译上线之前,需要对多分支代码的合线情况进行检测,以确定开发项目各分支的资源、项目代码等是否整合成功。
传统上通常采用运行根据代码更新相关的内容编写的测试用例,并根据测试用例的测试结果确定判断代码合线是否准确完成的方式。然而,由于存在多条并行开发的代码分支,因此需要耗费大量时间针对每条分支的不同情况分别编写多条测试用例,也并不能保证所编写的测试用例均能有效地判定当前的合线是否正确。因此,传统上对于代码合线是否正确的判断方式,仍然存在耗时长,判断结果准确性低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够准确判断代码分支的合线是否正确、并减少耗时的代码分支的合线检测方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种代码分支的合线检测方法。所述方法包括:
获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
基于所述第一删除行和所述第二删除行,获得完整删除行;
根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
第二方面,本申请还提供了一种代码分支的合线检测装置。所述装置包括:
文件类型确定模块,用于获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
代码行确定模块,用于若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
完整删除行确定模块,用于基于所述第一删除行和所述第二删除行,获得完整删除行;
目标新增行确定模块,用于根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
合线检测模块,用于基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
基于所述第一删除行和所述第二删除行,获得完整删除行;
根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
基于所述第一删除行和所述第二删除行,获得完整删除行;
根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
基于所述第一删除行和所述第二删除行,获得完整删除行;
根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
上述代码分支的合线检测方法、装置、计算机设备、存储介质和计算机程序产品,通过获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型。其中,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行,进而基于第一删除行和第二删除行,获得完整删除行。进一步地,根据完整删除行,对新增行进行筛选,筛选得到目标新增行,可准确确定出修改内容,避免重复进行相同代码行的删除、新增处理,减少无效处理,提升开发效率。而基于目标新增行、以及第一分支的分支代码文件,进行合线检测,可生成合线检测结果,由于无需针对每条分支的不同实际情况分别编写多条测试用例,可减少时间消耗,根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了对分支合线的检测效率和准确度。
附图说明
图1为一个实施例中代码分支的合线检测方法的应用环境图;
图2为一个实施例中代码分支的合线检测方法的流程示意图;
图3为一个实施例中文件类型为代码文件的差异信息示意图;
图4为一个实施例中新增行序列和第一分支的分支代码文件的代码行序列比对示意图;
图5为一个实施例中第一分支和第二分支的合并过程示意图;
图6为一个实施例中筛选得到目标新增行的流程示意图;
图7为一个实施例中确定第一分支和第二分支之间的目标新增行的流程示意图;
图8为一个实施例中得到合线检测结果的流程示意图;
图9为一个实施例中图片上传功能的提交信息示意图;
图10为一个实施例中针对提交详情信息进行筛选确定关联提交信息的流程示意图;
图11为另一个实施例中代码分支的合线检测方法的流程示意图;
图12为再一个实施例中代码分支的合线检测方法的流程示意图;
图13为一个实施例中代码分支的合线检测装置的结构框图;
图14为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的代码分支的合线检测方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
进一步地,终端102和服务器104均可单独用于执行本申请实施例中提供的对象身份识别处理方法,终端102和服务器104也可协同用于执行本申请实施例中提供的对象身份识别处理方法。举例来说,以终端102和服务器104协同执行本申请实施例中提供的对象身份识别处理方法为例,服务器104通过获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型,其中待合并代码分支包括第一分支和第二分支。其中,差异信息可存储在终端102的本地存储中,也可存储至数据存储系统或服务器104的云端存储中。进一步地,当服务器104确定文件类型为代码文件时,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行。进而服务器104基于第一删除行和第二删除行,获得完整删除行,并根据完整删除行,对新增行进行筛选,筛选得到目标新增行。最终服务器104基于目标新增行、以及第一分支的分支代码文件,进行合线检测,生成合线检测结果,并进一步将合线检测结果进行展示,或反馈至终端102进行展示。
本申请实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。举例来说,以应用于人工智能场景下的游戏开发场景为例,在游戏开发场景下,由于不同使用对象在实际游戏操作过程中,对不同的游戏应用程序存在各自的性能、功能要求,进而需要根据实际需求对游戏应用程序不断进行开发,因此游戏应用程序的开发版本迭代较为频繁,本申请实施例提供的代码分支的合线检测方法可以用于游戏开发场景中。
具体来说,在游戏开发场景下,针对游戏应用程序在开发过程中的多个开发版本,可以采用多分支并行开发的方式。在多分支并行开发过程中,通过获取待合并的第一分支、第二分支各自的差异信息,并根据差异信息确定待合并的第一分支、第二分支的文件类型。其中,若文件类型为代码文件,则根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行。而基于第一删除行和第二删除行,可获得完整删除行,可准确确定出修改内容,避免重复进行相同代码行的删除、新增处理,减少无效处理,提升对游戏应用程序的开发效率。进一步可根据完整删除行,对新增行进行筛选,筛选得到目标新增行,以基于目标新增行、以及第一分支的分支代码文件,进行合线检测,生成合线检测结果,由于无需针对每条分支的不同实际情况分别编写多条测试用例,可减少时间消耗,根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了游戏应用程序开发场景下对各代码分支的合线情况的检测效率和准确度,可进一步根据合线情况及时进行调整和修改,避免出现遗漏问题或性能缺陷,进一步改善不同使用对象对游戏应用程序的使用体验。
在一个实施例中,如图2所示,提供了一种代码分支的合线检测方法,以该方法由计算机设备执行为例进行说明,可以理解的是,该计算机设备可以是图1所示的终端102,也可以是服务器104,还可以是终端102服务器104所组成的系统,并通过终端102和服务器104之间的交互实现。本实施例中,代码分支的合线检测方法,具体包括以下步骤:
步骤S202,获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型,待合并代码分支包括第一分支和第二分支。
其中,在应用程序或者应用平台等的开发过程中,通常采用多分支并行开发方式,在多分支并行开发方式下,通常并行运行有多个项目的代码分支。而在多分支开发过程中,通过从开发主线上分离出多个源代码目录的副本,作为多个其他需要进一步合并的代码分支,开发主线属于稳定的代码版本,为代码的迭代开发提供稳定可靠的代码基础,而其他分离出的多个代码分支用于进行新功能特性开发、执行提交的缺陷修复任务等。
具体来说,代码分支的合线过程,可以理解为再分支并行运行过程中,在其中一条分支线上完成开发后,需要将该条开发完成的分支上的代码和资源合入到另外的分支的过程,用以实现不同代码分支上的代码和资源的整合。
具体地,待合并代码分支具体包括第一分支和第二分支,通过获取第一分支和第二分支的分支名称、以及目标合线检测时间,并基于分支名称以及目标合线检测时间,进一步从代码管理工具,比如Git(即分布式版本控制系统)、或SVN(即Subversion,版本控制系统)等管理工具中,获取待合并的第一分支、第二分支各自的差异信息。
其中,差异信息表示根据diff命令(即比较命令)将数据进行某种移动之后,再与原数据进行比较得出的差异数据。本实施例中,针对不同代码分支,根据项目开发要求,产生多种不同的提交任务,可以是修改、新增、删除等不同开发需求的提交任务。其中,通过执行不同的提交任务,会增加或修改代码分支中代码文件或资源文件,从而在提交任务执行前后可形成相应的差异数据。
进一步地,差异信息具体包括第一分支的第一差异信息、以及第二分支的第二差异信息,进而基于第一差异信息可确定第一分支的文件类型,以及基于第二差异信息可确定第二分支的文件类型。
在一个实施例中,根据差异信息确定待合并代码分支的文件类型,具体包括:基于差异信息进行信息提取和筛选处理,获得代码分支的文件名称,并根据文件名称确定待合并代码分支的文件类型。
具体地,文件名称对应不同的后缀名称,项目开发过程所使用的编程语言不同,相应的代码文件的后缀名称也不同,举例来说,比如以c、cpp作为结尾的后缀名称,其代码文件为C++(即面向对象编程语言)代码文件,又比如以py作为结尾的后缀名称,其代码文件为Python(解释型脚本编程语言)代码文件,进而可根据代码分支的文件名称的后缀名称,进一步确定待合并代码分支的文件类型。
其中,待合并代码分支的文件类型包括代码文件和资源文件,代码文件可根据文件名称的后缀名称是否属于编程语言来确定,而其他不属于编程语言的文件则划分为资源文件。
进一步地,对于需要进行合并处理的第一分支和第二分支,两者的文件名称和存储路径均相同,若两者的文件名称或存储路径不同,则表明开发过程中并未针对第一分支、第二分支进行合并操作,即只有两者的文件名称和存储路径均相同时,才进一步执行代码分支的合入检测操作,判断分支之间是否合并完成。
步骤S204,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行。
具体地,当根据待合并分支的文件类型,确定待合并分支为代码文件时,以需要将第二分支合并至第二分支为例,进行进一步细化处理:
根据第一分支的第一差异信息确定第一分支的第一删除行,以及根据第二分支的第二差异信息,确定第二分支的第二删除行和新增行。
进一步地,根据第一分支的第一差异信息,确定第一分支的所有提交信息,并根据提交信息,进一步确定第一分支中的各个提交任务、以及各提交任务的提交时间,进而根据各提交任务确定第一分支的第一删除行,以及各第一删除行的提交时间。其中,提交任务具体包括修改任务、新增任务、删除任务等不同类型的任务,而针对需要新增的功能特征不同,提交任务还可包括与不同功能涉及的具体组件关联的任务,比如与图像采集组件的图像上传功能关联的提交任务、与音频收集组件的音频上传功能关联的提交任务等。
同样地,根据第二分支的第二差异信息,确定第二分支的所有提交信息,并根据提交信息,进一步确定第二分支中的各个提交任务、以及各提交任务的提交时间,进而根据各提交任务确定第二分支的第二删除行和新增行,并确定各第二删除行、各新增行各自的提交时间。
在一个实施例中,如图3所示,提供了一种文件类型为代码文件的差异信息示意,参照图3可知,提供了待合并代码文件的diff信息(即差异信息),可获取到其文件类型为python脚本,路径及文件名称为voguepic/items.py。其中,文件名称的后缀名称为“py”,可确定该分支的文件类型为python脚本文件,即确定该分支的文件类型为代码文件。
进一步地,根据图3所示的差异信息,确定变更的数据内容为新增行15行,删除0行,其中,“@@-0,0+1,15@@”代表修改的部分为原文件的0行,新文件的1至15行之间。
步骤S206,基于第一删除行和第二删除行,获得完整删除行。
具体地,通过合并第一分支的第一删除行、以及第二分支的第二删除行,获得完整删除行。其中,完整删除行中包括第一分支的提交任务中需要删除的代码行、以及第二分支的提交任务中需要删除的代码行。
步骤S208,根据完整删除行,对新增行进行筛选,筛选得到目标新增行。
具体地,通过比对新增行和完整删除行,若在新增行中存在某一代码行,在完整删除行中也存在,且该代码行在新增行的提交时间小于该代码在完整删除行的提交时间,且该代码行在完整删除行的相对位置和该代码行在新增行的相对位置一致,则将该代码行从新增行中删除,得到剔除该代码行后的新增行,确定为目标新增行。
其中,合并第一分支的第一删除行、以及第二分支的第二删除行后,得到完整删除行,如果第二分支中的新增行中的某代码行的提交时间,小于该代码行再完整删除行的提交时间,则说明该代码行在后续的开发过程是先新增后删除的,即在完整的开发过程中属于无效的提交任务,进而需要删除该代码行,以减少无效处理操作,减少项目开发时间,提升项目开发效率。
步骤S210,基于目标新增行、以及第一分支的分支代码文件,进行合线检测,生成合线检测结果。
具体地,基于连续的各目标新增行,获得新增行序列,若第一分支的分支代码文件中存在新增行序列,得到合线成功的合线检测结果。
进一步地,基于连续的各目标新增行,获得新增行序列后,进一步判断第一分支的分支代码文件中是否存在新增行序列。
具体来说,若新增行序列中属于某一处理函数,则进一步判断第一分支的分支代码文件中是否存在对应处理函数,如果存在对应处理函数,则进一步判断第一分支的分支代码文件中的处理函数所包括的代码行是否和新增行序列一致。
其中,在存在处理函数的情况下,具体是确定第一分支的分支代码文件,是否包含该处理函数下的所有新增行,该些新增行的原始排序需相同,但不要求该些新增行在第一分支的代码文件中连续存在。
在一个实施例中,如图4所示,提供了一种新增行序列和第一分支的分支代码文件的代码行序列比对示意图,参照图4可知,比如所确定的新增行序列属于处理函数A,该新增行序列包括5行新增行,且新增行序列中的代码行的排序依次为代码行1、代码行2、代码行3、代码行4、以及代码行5。若判断第一分支的分支代码文件中同样存在处理函数A,则进一步获取第一分支的分支代码文件中属于处理函数A的各代码行,并获取各代码行的排序,比如第一分支的分支代码文件的处理函数A的包括8行代码,且代码行的排序依次为代码行1、代码行6、代码行7、代码行2、代码行3、代码行4、代码行8以及代码行5。
由此可见,相对于新增行序列,第一分支的分支代码文件的处理函数A所包括的代码行多出代码行6、代码行7以及代码行8,因此各代码行并不连续,但在第一分支的分支代码文件中新增行序列的原始排序并未发生变化,即在第一分支的分支代码文件中代码行1至代码行5的原始排序并未发生变化,进而可得到合线成功的合线检测结果。
相反地,若第一分支的分支代码文件的处理函数A所包括的代码行,并未完全包括新增行序列中的所有代码行,或者在第一分支的分支代码文件中代码行1至代码行5的原始排序发生了变化,则得到合线失败的合线检测结果。
在一个实施例中,如图5所示,提供了一种第一分支和第二分支的合并过程,参照图5可知,在第一分支的开发过程中,会拉取第二分支,然后第一分支、第二分支并行开发,其中,在第二分支相关的开发完成后,第二分支的分支代码文件中包括进行新功能特性开发、执行提交的缺陷修复任务的代码以及资源等,需要把将第二分支开发完成后得到的代码和资源合入到第一分支中,完成开发过程中的代码、资源整合。
上述代码分支的合线检测方法中,通过获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型。其中,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行,进而基于第一删除行和第二删除行,获得完整删除行。进一步地,根据完整删除行,对新增行进行筛选,筛选得到目标新增行,可准确确定出修改内容,避免重复进行相同代码行的删除、新增处理,减少无效处理,提升开发效率。而基于目标新增行、以及第一分支的分支代码文件,进行合线检测,可生成合线检测结果,由于无需针对每条分支的不同实际情况分别编写多条测试用例,可减少时间消耗,根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了对分支合线的检测效率和准确度。
在一个实施例中,如图6所示,筛选得到目标新增行的步骤,即根据完整删除行,对新增行进行筛选,筛选得到目标新增行的步骤,具体包括:
步骤S602,从新增行中,确定出和完整删除行中位于相同位置的相同代码行。
具体地,针对新增行和完整删除行,执行遍历操作和匹配操作,确定出同时位于新增行以及完整删除行中的相同代码行。其中,该相同代码行在新增行以及完整删除行中的位置一致。
步骤S604,获取相同代码行在完整删除行中的第一提交时间、以及相同代码行在新增行中的第二提交时间。
具体地,通过获取相同代码行在完整删除行中的第一提交时间、以及相同代码行在新增行中的第二提交时间,并进一步比对第一提交时间和第二提交时间,判断第一提交时间是否小于第二提交时间。
步骤S606,若第二提交时间小于第一提交时间,将相同代码行从新增行中删除,得到目标新增行。
具体地,若第二提交时间小于第一提交时间,则表明该相同代码行在项目的完整开发过程中为先增加后删除的代码行,属于无效代码行,需要进行删除,进而通过将该相同代码行从新增行中删除,即可得到需要合并至第一分支中的目标新增行。
在一个实施例中,如图7所示,确定第一分支和第二分支之间的目标新增行的步骤,具体包括:
首先,针对第一分支、第二分支,分别进行diff信息(即差异信息)提取,得到第一分支的第一差异信息、以及第二分支的第二差异信息;其次,基于第一差异信息确定第一删除行,基于第二差异信息确定第二删除行和新增行;第三,合并第一删除行和第二删除行,得到完整删除行;第四,从新增行中,确定出和完整删除行中位于相同位置的相同代码行,若该相同代码行在完整删除行中的第一提交时间小于在新增行中的第二提交时间时,则将相同代码行从新增行中删除,得到目标新增行。
本实施例中,通过从新增行中,确定出和完整删除行中位于相同位置的相同代码行,并获取相同代码行在完整删除行中的第一提交时间、以及相同代码行在新增行中的第二提交时间,进而在确定第二提交时间小于第一提交时间时,将相同代码行从新增行中删除,得到目标新增行。实现了基于第一分支的第一删除行、以及第二分支的第二删除行和新增行,确定出需要剔除的无效新增行,以得到目标新增行,减少开发过程中的无效操作,减少项目开发时间,进一步提升项目开发效率。
在一个实施例中,新增行序列包括第一类修改代码段、以及第二类修改代码段;基于连续的各目标新增行,获得新增行序列,包括:
确定各目标新增行所属的处理函数;根据各处理函数,依次对连续的各目标新增行进行段划分,获得与每一处理函数一一对应的第一类修改代码段;第一类修改代码段中包括至少一行目标新增行;若存在不属于任意处理函数的连续目标新增行,则将连续目标新增行划分为第二类修改代码段。
具体地,针对新增行序列中的各新目标增行是否属于处理函数,将各目标新增行划分为不同修改代码段,得到新增行序列。其中,新增行序列包括第一类修改代码段、以及第二类修改代码段。
具体来说,当确定各目标新增行属于处理函数时,则将每一处理函数包括的连续目标新增行划分为第一类修改代码段,其中,处理函数的类型、以及数量不进行具体限定,根据实际业务场景下的各目标新增行中具体涉及的处理函数确定得到。
举例来说,比如确定各目标新增行涉及处理函数A、处理函数B以及处理函数C,则按照各处理函数,依次对连续的各目标新增行进行段划分,获得与每一处理函数一一对应的第一类修改代码段,具体包括与处理函数A、处理函数B以及处理函数C一一对应的3个第一类修改代码段。其中,每个第一类修改代码段中包括至少一行目标新增行。
同样地,当确定存在不属于任意处理函数的连续目标新增行,则将连续目标新增行划分为第二类修改代码段。
举例来说,比如存在5行连续目标新增行,不属于任何处理函数,则将该5行连续目标新增行划分为一个第二类修改代码段。其中,如果在分支代码文件的不同位置,分别存在多段不属于任何处理函数的连续目标新增行,由于该些连续目标新增行位于代码文件的不同位置,则无法将该些连续目标新增行直接划分为一个第二类修改代码段,进而根据在代码文件的不同位置的连续目标新增行,分别得到多个第二类修改代码段。
本实施例中,通过确定各目标新增行所属的处理函数,并根据各处理函数,依次对连续的各目标新增行进行段划分,获得与每一处理函数一一对应的第一类修改代码段,而若存在不属于任意处理函数的连续目标新增行,则将连续目标新增行划分为第二类修改代码段。实现了根据是否具有处理函数的不同情况,分别将各目标新增行进行划分,得到第一类修改代码段或第二类修改代码段,以便后续进行合线检测时,在第一分支的分支代码文件中匹配不同情形下的代码段进行比对,生成准确的合线检测结果,提升合线检测结果的准确度以及合线检测效率。
在一个实施例中,新增行序列包括第一类修改代码段;若第一分支的分支代码文件中存在新增行序列,得到合线成功的合线检测结果,包括:
若新增行序列为第一类修改代码段,根据每一第一类修改代码段所属的处理函数,对第一分支的分支代码文件进行匹配处理,从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段;
若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
具体地,当确定新增行序列为第一类修改代码段时,即当前新增行序列涉及至少一个处理函数,则获取每一个第一类修改代码段所属的处理函数,并根据每个处理函数对第一分支的分支代码文件进行匹配处理,具体是从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段。
其中,当进行匹配操作后,确定第一分支的分支代码文件中同样存在各第一类修改代码段所属的处理函数时,则进一步从第一分支的分支代码文件中,提取出与每个处理函数各自所匹配的目标代码段。其中,所提取的目标代码段,用于和对应的第一类修改代码段进行比对,以得到合线检测结果。
进一步地,通过获取第一类修改代码段中的所有第一新增行,以及各第一新增行的排列顺序,并判断每一目标代码段中,是否包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行。若确定每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行,则进一步判断各第一新增行在目标代码段、以及在第一类修改代码段中的排列顺序是否一致。
其中,若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,则得到合线成功的合线检测结果。
举例来说,比如所确定的新增行序列属于处理函数B,该新增行序列包括3行新增行,且新增行序列中的代码行的排序依次为代码行1、代码行2以及代码行3。若判断第一分支的分支代码文件中同样存在处理函数B,则进一步获取第一分支的分支代码文件中属于处理函数B的各代码行,并获取各代码行的排序,比如第一分支的分支代码文件的处理函数A的包括4行代码,且代码行的排序依次为代码行1、代码行4、代码行2、以及代码行3。
由此可见,相对于新增行序列,第一分支的分支代码文件的处理函数B所包括的代码行多出代码行4,但在第一分支的分支代码文件中新增行序列的原始排序并未发生变化,即在第一分支的分支代码文件中代码行1至代码行3的原始排序并未发生变化,进而可得到合线成功的合线检测结果。
在一个实施例中,新增行序列还包括第二类修改代码段;若第一分支的分支代码文件中存在新增行序列,得到合线成功的合线检测结果,包括:
若新增行序列为第二类修改代码段,且第二类修改代码段中的各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
具体地,若确定新增行序列为第二类修改代码段,即第二类修改代码段中的各第二新增行并不属于任何处理函数,则进一步判断第一分支的分支代码文件中是否存在各第二新增行。其中,若第一分支的分支代码文件中存在各第二新增行,则进一步获取涉及各第二新增行的目标代码段,并判断目标代码段中的各第二新增行的排列顺序,和该些第二新增行在第二类修改代码段中的排列顺序是否一致。
进一步地,当新增行序列为第二类修改代码段时,第一分支的分支代码文件中存在各第二新增行、且各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,从而得到合线成功的合线检测结果。
举例来说,以将新增行序列划分为一个第二类修改代码段为例,比如该第二类修改代码段中包括4行代码,代码行1、代码行2、代码行3以及代码行4,而且第一分支的分支代码文件中同样存在包含代码行1、代码行2、代码行3以及代码行4的目标代码段。其中,第二类修改代码段中各代码行的排列顺序依次为:代码行1、代码行2、代码行3以及代码行4。
而第一分支的分支代码文件中涉及代码行1、代码行2、代码行3以及代码行4的目标代码段中,还包括代码行5、代码行6,且第一分支的分支代码文件的目标代码段中,各代码行的排列顺序为:代码行1、代码行5、代码行2、代码行3、代码行6以及代码行4。
可以理解的是,相对于第二类修改代码段,第一分支的分支代码文件中的目标代码段多出了代码行5以及代码行6,但在第一分支的分支代码文件中各第二新增行的原始排序并未发生变化,即在第一分支的分支代码文件中代码行1至代码行4的原始排序并未发生变化,进而可得到合线成功的合线检测结果。
在一个实施例中,如图8所示,得到合线检测结果的具体流程,包括:
首先,根据所确定出的第二分支需要合并入第一分支的目标新增行,进行代码段划分,将属于不同提交任务的目标新增行分别划分为多个大修改块;
其次,针对每个大修改块,将每个大修改块中涉及处理函数的各目标新增行划分为第一类修改代码段,即每个处理函数对应一个第一类修改代码段;
第三,将不属于任何处理函数的连续目标新增行,划分为第二类修改代码段;
第四,针对每个第一类修改代码段,根据每一第一类修改代码段所属的处理函数,对第一分支的分支代码文件进行匹配处理,从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段;
第五,若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,得到合线成功的合线检测结果;
第六,若新增行序列为第二类修改代码段,且第二类修改代码段中的各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
本实施例中,若新增行序列为第一类修改代码段,则根据每一第一类修改代码段所属的处理函数,对第一分支的分支代码文件进行匹配处理,从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段。若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,则得到合线成功的合线检测结果。同样地,若新增行序列为第二类修改代码段,且第二类修改代码段中的各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,则得到合线成功的合线检测结果。实现了根据不同情形下的修改代码段,分别进行不同的合线检测判断处理,以实现针对性地合线检测,生成准确的合线检测结果,提升合线检测结果的准确度以及合线检测效率。
在一个实施例中,提供了一种代码分支的合线检测方法,具体包括以下步骤:
若文件类型为资源文件,获取第一分支的代码文件的存储路径;若存储路径中存在数据资源,根据数据资源确定第一分支的代码文件的第一文件信息摘要值;根据第二分支的第二差异信息确定目标新增资源,并基于目标新增资源,确定第二分支的代码文件的第二信息摘要值;若第一信息摘要值和第二信息摘要值一致,得到合线成功的合线检测结果。
具体地,当根据待合并代码分支的文件名称,确定待合并代码分支的文件类型为资源文件时,则获取第一分支的代码文件的存储路径,以针对第一分支的存储路径进行扫描处理,确认是否存在资源漏合的问题。具体来说,获取第一分支的代码文件的存储路径,判断存储路径中是否存在数据资源,若存储路径中存在数据资源,则进一步根据数据资源确定第一分支的代码文件的第一文件信息摘要值。
其中,只有当第一分支的存储路径中存在数据资源时,才进一步判断是否资源文件完全合入,如果第一分支的存储路径中并不存在数据资源,则表明针对第一分支和第二分支并未执行合并操作,则无需进行合线检测操作。
进一步地,当第一分支的存储路径中存在数据资源时,根据第二分支的第二差异信息确定目标新增资源,并基于目标新增资源,确定第二分支的代码文件的第二信息摘要值,通过将第一信息摘要值和第二信息摘要值进步比对,以判断第一信息摘要值和第二信息摘要值是否一致。
其中,若第一信息摘要值和第二信息摘要值一致,得到合线成功的合线检测结果,相反地,如果第一信息摘要值和第二信息摘要值不一致,则得到合线失败的合线检测结果。
本实施例中,若文件类型为资源文件,获取第一分支的代码文件的存储路径,且在存储路径中存在数据资源时,根据数据资源确定第一分支的代码文件的第一文件信息摘要值。同样地,根据第二分支的第二差异信息确定目标新增资源,并基于目标新增资源,确定第二分支的代码文件的第二信息摘要值,进而在第一信息摘要值和第二信息摘要值一致时,得到合线成功的合线检测结果。实现了针对文件类型的不同,设置不同的合线检测方式,实现针对性的检测,以减少合线检测过程中的不必要操作,减少资源消耗和检测时间,提升合线检测的工作效率。
在一个实施例中,提供了一种代码分支的合线检测方法,具体包括以下步骤:
根据待合并代码分支的差异信息,确定与待合并代码分支对应的提交详情信息;基于与待合并代码分支对应的配置信息,从提交详情信息筛选出关联提交信息;配置信息根据项目的不同开发阶段确定;根据关联提交信息,确定与当前开发阶段对应的代码修改提交任务;代码修改提交任务和待合并代码分支的新增行或者删除行对应。
具体地,根据待合并的第一分支的第一差异信息,确定与第一分支对应的提交详情信息,以及根据待合并的第二分支的第二差异信息,确定与第二分支对应的提交详情信息,并通过获取与待合并代码分支对应的配置信息,以基于配置信息从提交详情信息筛选出关联提交信息。
其中,配置信息根据项目的不同开发阶段确定,具体包括不同开发阶段的开发需求、开发组件、以及开发功能等,提交详情信息则包括文件路径、提交任务信息、提交对象以及提交时间等具体信息。
同样地,针对待合并代码分支而言,每次提交任务均有可能需要修改多个文件,而不同文件的具体处理操作,根据配置信息进一步确定。具体来说,根据开发过程中的具体阶段的开发需求,作为配置信息,可屏蔽某些提交任务,达到筛选的目的,以减少需要检测的工作量,提升效率。
进一步地,具体可以根据不同开发阶段的开发需求、开发组件、以及开发功能等配置信息,对提交详情信息包括的文件路径、提交任务信息、提交对象以及提交时间等具体信息,进行进一步筛选,以从提交详情信息筛选出关联提交信息,进而可根据关联提交信息,确定与当前开发阶段对应的代码修改提交任务。
其中,代码修改提交任务和待合并代码分支的新增行或者删除行对应,比如代码修改提交任务表明需要删除待合并代码分支中的某行或者某些代码行,或需要在待合并代码分支的分支代码文件的某个位置新增一行或者多行代码。可以理解的是,根据代码修改提交任务的任务详情信息,同样可确定出待合并代码分支的删除行或者新增行。
进一步地,如图9所示,提供了一种图片上传功能的提交信息示意图,参照图9可知,比如当前开发阶段的开发功能为图片上传功能,则根据当前开发阶段的开发功能对提交详情信息进行筛选时,可筛选出提交任务信息中为图片上传任务的关联提交信息,进而将图片上传任务确定为当前开发阶段对应的代码修改提交任务,即当前开发阶段只处理图片上传任务的提交任务,比如其他音频上传任务、图像采集任务等的提交任务,则会进行屏蔽,不会同时和图片上传任务同步处理,以达到减少合线检测工作量的目的。
在一个实施例中,如图10所示,提供了一种针对提交详情信息进行筛选确定关联提交信息的步骤,参照图10可知,待合并代码分支的每次提交详情信息具体包括文件路径、提交任务信息、提交对象以及提交时间,根据与待合并代码分支对应的配置信息,对提交详情信息进行筛选,从提交详情信息筛选出关联提交信息,以根据关联提交信息,确定与当前开发阶段对应的代码修改提交任务,进而当前开发阶段仅处理对应的代码修改提交任务。
本实施例中,根据待合并代码分支的差异信息,确定与待合并代码分支对应的提交详情信息,并基于与待合并代码分支对应的配置信息,从提交详情信息筛选出关联提交信息,进而根据关联提交信息,确定与当前开发阶段对应的代码修改提交任务,其中,代码修改提交任务和待合并代码分支的新增行或者删除行对应。实现了基于配置信息,对与待合并代码分支对应的提交详情信息进行筛选,进而可屏蔽某些提交任务,达到减少合线检测检测的工作量的目的,并进一步提升合线检测处理操作的工作效率。
在一个实施例中,如图11所示,提供了一种代码分支的合线检测方法,参照图11可知,该代码分支的合线检测方法具体包括以下步骤:
步骤S1101,获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型,待合并代码分支包括第一分支和第二分支。
步骤S1102,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行。
步骤S1103,从新增行中,确定出和完整删除行中位于相同位置的相同代码行,并获取相同代码行在完整删除行中的第一提交时间、以及相同代码行在新增行中的第二提交时间。
步骤S1104,若第二提交时间小于第一提交时间,将相同代码行从新增行中删除,得到目标新增行。
步骤S1105,确定各目标新增行所属的处理函数,并根据各处理函数,依次对连续的各目标新增行进行段划分,获得与每一处理函数一一对应的第一类修改代码段。
执行步骤S1105后,执行步骤S1106至步骤S1107,步骤S1106:若新增行序列为第一类修改代码段,根据每一第一类修改代码段所属的处理函数,对第一分支的分支代码文件进行匹配处理,从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段。
步骤S1107,若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
执行步骤S1104后,执行步骤S1108至步骤S1109,步骤S1108:若存在不属于任意处理函数的连续目标新增行,将连续目标新增行划分为第二类修改代码段。
步骤S1109,若新增行序列为第二类修改代码段,且第二类修改代码段中的各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
执行步骤S1101后,执行步骤S1110至步骤S1113,步骤S1110:若文件类型为资源文件,获取第一分支的代码文件的存储路径。
步骤S1111,若存储路径中存在数据资源,根据数据资源确定第一分支的代码文件的第一文件信息摘要值。
步骤S1112,根据第二分支的第二差异信息确定目标新增资源,并基于目标新增资源,确定第二分支的代码文件的第二信息摘要值。
步骤S1113,若第一信息摘要值和第二信息摘要值一致,得到合线成功的合线检测结果。
上述代码分支的合线检测方法中,通过获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型。其中,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行,进而基于第一删除行和第二删除行,获得完整删除行。进一步地,根据完整删除行,对新增行进行筛选,筛选得到目标新增行,可准确确定出修改内容,避免重复进行相同代码行的删除、新增处理,减少无效处理,提升开发效率。而基于目标新增行、以及第一分支的分支代码文件,进行合线检测,可生成合线检测结果,由于无需针对每条分支的不同实际情况分别编写多条测试用例,可减少时间消耗,根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了对分支合线的检测效率和准确度。
在一个实施例中,如图12所示,提供了一种代码分支的合线检测方法,具体包括:
首先,获取分支A(即第二分支)和分支B(即第一分支)的名称以及需要检测的时间,以此为基准获取相关diff信息(即差异信息),然后根据diff信息做提取筛选处理,找到分支A和分支B的文件名称,并根据文件名称确定分支A和分支B的文件类型,不同文件类型执行不同的合线检测操作。其中,如果文件类型为代码文件,则进一步确定代码文件的详情信息后,再进行合线检测操作。其中,如果是资源文件或者其他文件,则记录文件名称和存储路径,通过直接对比存储路上的资源的MD5值(即信息摘要值),如果分支B的信息摘要值和分支A信息摘要值一致,则表示合入成功,如果不一致则不成功。
其次,针对文件类型为代码文件时,比如文件类型为python脚本的代码文件,存储路径及文件名为voguepic/items.py,变更的数据内容为新增代码行15行,删除0行,“@@-0,0+1,15@@”代表修改的部分为原文件的0行,新文件的1至15行之间。
其中,针对待合并代码分支而言,由于每次提交任务均有可能需要修改多个文件,而不同文件的具体处理操作,根据配置信息进一步确定。其中,具体可以将开发过程中的具体阶段的开发需求,作为配置信息,进而屏蔽某些提交任务,达到筛选的目的,以减少需要检测的工作量,提升效率。举例来说,如当前开发阶段的开发功能为图片上传功能,则根据当前开发阶段的开发功能对提交详情信息进行筛选时,可筛选出提交任务信息中为图片上传任务的关联提交信息,进而将图片上传任务确定为当前开发阶段对应的代码修改提交任务。
具体来说,可以根据不同开发阶段的开发需求、开发组件、以及开发功能等配置信息,对提交详情信息包括的文件路径、提交任务信息、提交对象以及提交时间等具体信息,进行进一步筛选,以从提交详情信息筛选出关联提交信息,进而可根据关联提交信息,确定与当前开发阶段对应的代码修改提交任务,通过只执行与当前开发阶段对应的代码修改提交任务,减少合线检测操作处理的工作量,提升合线检测工作效率。
第三,针对文件类型为代码文件时,假设分支A要合入分支B,则需要整理出分支A中的所有提交,每个提交都需要整理出新增行和删除行,同时要保存这些提交的新增行、删除行的相对位置和提交时间。同时,还需统计分支B的提交,主要是统计删除行,并然后合并分支A和分支B的删除行的信息,得到完整删除行。
进一步地,通过比对分支A的新增行、以及完整删除行,从新增行中,确定出和完整删除行中位于相同位置的相同代码行,若该相同代码行在完整删除行中的第一提交时间小于在新增行中的第二提交时间时,则将相同代码行从新增行中删除,得到目标新增行。其中,目标新增行即为需要合入分支B中的新增行。
第四,确定出目标新增行后,进一步判断第一分支中是否包括目标新增行。其中,对所确定出的第二分支需要合并入第一分支的目标新增行,进行代码段划分,将属于不同提交任务的目标新增行分别划分为多个大修改块,进而针对每个大修改块,将每个大修改块中涉及处理函数的各目标新增行划分为第一类修改代码段,即每个处理函数对应一个第一类修改代码段。同样地,将不属于任何处理函数的连续目标新增行,划分为第二类修改代码段。
进一步地,针对每个第一类修改代码段,根据每一第一类修改代码段所属的处理函数,对第一分支的分支代码文件进行匹配处理,从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段。其中,若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,则得到合线成功的合线检测结果。
同样地,若新增行序列为第二类修改代码段,且第二类修改代码段中的各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
其中,具体可为使用对象提供图形化操作界面,通过在操作界面输入需要检查比较的待合并代码分支,以及检测的起止时间,则可比较在检测时间段内,在待合并分支上提交的所有内容,确认是否有同时合入到另一分支。其中,若检测到存在遗漏代码文件或遗漏资源文件,则生成对应的检查文档进行展示,以便进一步进行查漏补缺,确定出遗漏的代码文件或者资源文件。
同样地,针对图形化操作界面,同时提供开发量统计功能,用于实现项目管理,可在合线检测过程中,同时统计一段时间内的新增、删除的代码量,并根据统计内容生成相应的统计管理文档进行展示。
上述代码分支的合线检测方法中,通过获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型。其中,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行,进而基于第一删除行和第二删除行,获得完整删除行。进一步地,根据完整删除行,对新增行进行筛选,筛选得到目标新增行,可准确确定出修改内容,避免重复进行相同代码行的删除、新增处理,减少无效处理,提升开发效率。而基于目标新增行、以及第一分支的分支代码文件,进行合线检测,可生成合线检测结果,由于无需针对每条分支的不同实际情况分别编写多条测试用例,可减少时间消耗,根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了对分支合线的检测效率和准确度。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的代码分支的合线检测方法的代码分支的合线检测装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个代码分支的合线检测装置实施例中的具体限定可以参见上文中对于代码分支的合线检测方法的限定,在此不再赘述。
在一个实施例中,如图13所示,提供了一种代码分支的合线检测装置,包括:文件类型确定模块1302、代码行确定模块1304、完整删除行确定模块1306、目标新增行确定模块1308以及合线检测模块1310,其中:
文件类型确定模块1302,用于获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型,待合并代码分支包括第一分支和第二分支。
代码行确定模块1304,用于若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行。
完整删除行确定模块1306,用于基于第一删除行和第二删除行,获得完整删除行。
目标新增行确定模块1308,用于根据完整删除行,对新增行进行筛选,筛选得到目标新增行。
合线检测模块1310,用于基于目标新增行、以及第一分支的分支代码文件,进行合线检测,生成合线检测结果。
上述代码分支的合线检测装置中,通过获取待合并代码分支的差异信息,并根据差异信息确定待合并代码分支的文件类型。其中,若文件类型为代码文件,根据待合并的第一分支的第一差异信息确定第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定第二分支的第二删除行和新增行,进而基于第一删除行和第二删除行,获得完整删除行。进一步地,根据完整删除行,对新增行进行筛选,筛选得到目标新增行,可准确确定出修改内容,避免重复进行相同代码行的删除、新增处理,减少无效处理,提升开发效率。而基于目标新增行、以及第一分支的分支代码文件,进行合线检测,可生成合线检测结果,由于无需针对每条分支的不同实际情况分别编写多条测试用例,可减少时间消耗,根据待合并分支以及各自差异信息,即可准确获得合线成功与否的检测结果,提升了对分支合线的检测效率和准确度。
在一个实施例中,目标新增行确定模块,还用于:从新增行中,确定出和完整删除行中位于相同位置的相同代码行;获取相同代码行在完整删除行中的第一提交时间、以及相同代码行在新增行中的第二提交时间;若第二提交时间小于第一提交时间,将相同代码行从新增行中删除,得到目标新增行。
在一个实施例中,合线检测模块,还用于:基于连续的各目标新增行,获得新增行序列;若第一分支的分支代码文件中存在新增行序列,得到合线成功的合线检测结果。
在一个实施例中,目标新增行确定模块,还用于:确定各目标新增行所属的处理函数;根据各处理函数,依次对连续的各目标新增行进行段划分,获得与每一处理函数一一对应的第一类修改代码段;第一类修改代码段中包括至少一行目标新增行;若存在不属于任意处理函数的连续目标新增行,将连续目标新增行划分为第二类修改代码段。
在一个实施例中,合线检测模块,还用于:若新增行序列为第一类修改代码段,根据每一第一类修改代码段所属的处理函数,对第一分支的分支代码文件进行匹配处理,从第一分支的分支代码文件中提取出和每一处理函数各自所匹配的目标代码段;若每一目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各第一新增行在目标代码段以及在第一类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
在一个实施例中,合线检测模块,还用于:若新增行序列为第二类修改代码段,且第二类修改代码段中的各第二新增行在第一分支的分支代码文件、以及在第二类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
在一个实施例中,合线检测模块,还用于:若文件类型为资源文件,获取第一分支的代码文件的存储路径;若存储路径中存在数据资源,根据数据资源确定第一分支的代码文件的第一文件信息摘要值;根据第二分支的第二差异信息确定目标新增资源,并基于目标新增资源,确定第二分支的代码文件的第二信息摘要值;若第一信息摘要值和第二信息摘要值一致,得到合线成功的合线检测结果。
在一个实施例中,提供了一种代码分支的合线检测装置,还包括代码修改提交任务确定模块,用于:根据待合并代码分支的差异信息,确定与待合并代码分支对应的提交详情信息;基于与待合并代码分支对应的配置信息,从提交详情信息筛选出关联提交信息;配置信息根据项目的不同开发阶段确定;根据关联提交信息,确定与当前开发阶段对应的代码修改提交任务;代码修改提交任务和待合并代码分支的新增行或者删除行对应。
上述代码分支的合线检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图14所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待合并代码分支的差异信息、待合并代码分支的文件类型、第一分支的第一差异信息、第一分支的第一删除行、第二分支的第二差异信息、第二分支的第二删除行和新增行、完整删除行、目标新增行、第一分支的分支代码文件以及合线检测结果等数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码分支的合线检测方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (12)

1.一种代码分支的合线检测方法,其特征在于,所述方法包括:
获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
基于所述第一删除行和所述第二删除行,获得完整删除行;
根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行,包括:
从所述新增行中,确定出和所述完整删除行中位于相同位置的相同代码行;
获取所述相同代码行在所述完整删除行中的第一提交时间、以及所述相同代码行在所述新增行中的第二提交时间;
若所述第二提交时间小于所述第一提交时间,将所述相同代码行从所述新增行中删除,得到目标新增行。
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果,包括:
基于连续的各所述目标新增行,获得新增行序列;
若所述第一分支的分支代码文件中存在所述新增行序列,得到合线成功的合线检测结果。
4.根据权利要求3所述的方法,其特征在于,所述新增行序列包括第一类修改代码段、以及第二类修改代码段;所述基于连续的各所述目标新增行,得到新增行序列,包括:
确定各所述目标新增行所属的处理函数;
根据各所述处理函数,依次对连续的各所述目标新增行进行段划分,获得与每一所述处理函数一一对应的第一类修改代码段;所述第一类修改代码段中包括至少一行目标新增行;
若存在不属于任意处理函数的连续目标新增行,将所述连续目标新增行划分为第二类修改代码段。
5.根据权利要求4所述的方法,其特征在于,所述若所述第一分支的分支代码文件中存在所述新增行序列,得到合线成功的合线检测结果,包括:
若所述新增行序列为第一类修改代码段,根据每一所述第一类修改代码段所属的处理函数,对所述第一分支的分支代码文件进行匹配处理,从所述第一分支的分支代码文件中提取出和每一所述处理函数各自所匹配的目标代码段;
若每一所述目标代码段中,包含属于各自所匹配的处理函数的第一类修改代码段的所有第一新增行、且各所述第一新增行在所述目标代码段以及在第一类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
6.根据权利要求4所述的方法,其特征在于,所述若所述第一分支的分支代码文件中存在所述新增行序列,得到合线成功的合线检测结果,包括:
若所述新增行序列为第二类修改代码段,且所述第二类修改代码段中的各第二新增行在所述第一分支的分支代码文件、以及在所述第二类修改代码段中的排列顺序一致,得到合线成功的合线检测结果。
7.根据权利要求1至6任意一项所述的方法,其特征在于,所述文件类型还包括资源文件;所述方法还包括:
若所述文件类型为资源文件,获取所述第一分支的代码文件的存储路径;
若所述存储路径中存在数据资源,根据所述数据资源确定所述第一分支的代码文件的第一文件信息摘要值;
根据所述第二分支的第二差异信息确定目标新增资源,并基于所述目标新增资源,确定所述第二分支的代码文件的第二信息摘要值;
若所述第一信息摘要值和所述第二信息摘要值一致,得到合线成功的合线检测结果。
8.根据权利要求1至6任意一项所述的方法,其特征在于,所述方法还包括:
根据所述待合并代码分支的差异信息,确定与所述待合并代码分支对应的提交详情信息;
基于与待合并代码分支对应的配置信息,从所述提交详情信息筛选出关联提交信息;所述配置信息根据项目的不同开发阶段确定;
根据所述关联提交信息,确定与当前开发阶段对应的代码修改提交任务;所述代码修改提交任务和待合并代码分支的新增行或者删除行对应。
9.一种代码分支的合线检测装置,其特征在于,所述装置包括:
文件类型确定模块,用于获取待合并代码分支的差异信息,并根据所述差异信息确定所述待合并代码分支的文件类型;所述待合并代码分支包括第一分支和第二分支;
代码行确定模块,用于若所述文件类型为代码文件,根据待合并的第一分支的第一差异信息确定所述第一分支的第一删除行,以及根据待合并的第二分支的第二差异信息确定所述第二分支的第二删除行和新增行;
完整删除行确定模块,用于基于所述第一删除行和所述第二删除行,获得完整删除行;
目标新增行确定模块,用于根据所述完整删除行,对所述新增行进行筛选,筛选得到目标新增行;
合线检测模块,用于基于所述目标新增行、以及所述第一分支的分支代码文件,进行合线检测,生成合线检测结果。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
CN202211042728.1A 2022-08-29 2022-08-29 代码分支的合线检测方法、装置、计算机设备和存储介质 Pending CN117667648A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211042728.1A CN117667648A (zh) 2022-08-29 2022-08-29 代码分支的合线检测方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211042728.1A CN117667648A (zh) 2022-08-29 2022-08-29 代码分支的合线检测方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN117667648A true CN117667648A (zh) 2024-03-08

Family

ID=90075707

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211042728.1A Pending CN117667648A (zh) 2022-08-29 2022-08-29 代码分支的合线检测方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117667648A (zh)

Similar Documents

Publication Publication Date Title
CN108920135B (zh) 一种自定义业务生成方法、装置、计算机设备及存储介质
CN106557307B (zh) 业务数据的处理方法及处理系统
CN111984239A (zh) 一种页面配置方法、装置、服务器及存储介质
CN112286999A (zh) 基于mysql和mongodb的动态表单实现方法
CN114020840A (zh) 一种数据处理方法、装置、服务器、存储介质及产品
CN116048609A (zh) 配置文件更新方法、装置、计算机设备和存储介质
CN117667648A (zh) 代码分支的合线检测方法、装置、计算机设备和存储介质
CN112559641B (zh) 拉链表的处理方法及装置、可读存储介质、电子设备
CN114579171A (zh) 代码处理方法、装置、计算机设备和存储介质
KR20220115859A (ko) 프로세스의 에지 테이블 표현
CN117555955B (zh) 数据转换方法、数据转换装置、计算机设备、存储介质
CN115994194B (zh) 政务大数据的数据质量检查方法、系统、设备及介质
CN110019162B (zh) 实现属性归一的方法和装置
CN118092888A (zh) 代码辅助编程方法、装置、计算机设备和存储介质
US10229750B2 (en) Memory management architecture for use with a diagnostic tool
CN115801887A (zh) 作业指导文件的播放方法、装置、计算机设备、存储介质
CN115687074A (zh) 业务系统测试方法、装置、计算机设备和存储介质
CN118069044A (zh) 芯片数据存储方法、装置、设备、介质和产品
CN117033242A (zh) 测试数据生成方法、装置、计算机设备和存储介质
CN117130606A (zh) 前端页面配置方法、装置、计算机设备和存储介质
CN116880927A (zh) 规则管理方法、装置、计算机设备和存储介质
CN117216164A (zh) 金融数据同步处理方法、装置、设备、介质和程序产品
CN116756022A (zh) 数据准备方法、装置、计算机设备和存储介质
CN117971649A (zh) 数据处理方法、装置、计算机设备和存储介质
CN116775955A (zh) 数据标签固化方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination