CN112445514B - 一种代码评审方法及相关产品 - Google Patents

一种代码评审方法及相关产品 Download PDF

Info

Publication number
CN112445514B
CN112445514B CN201910836827.9A CN201910836827A CN112445514B CN 112445514 B CN112445514 B CN 112445514B CN 201910836827 A CN201910836827 A CN 201910836827A CN 112445514 B CN112445514 B CN 112445514B
Authority
CN
China
Prior art keywords
code
branch
release
review
code branch
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.)
Active
Application number
CN201910836827.9A
Other languages
English (en)
Other versions
CN112445514A (zh
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 Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910836827.9A priority Critical patent/CN112445514B/zh
Publication of CN112445514A publication Critical patent/CN112445514A/zh
Application granted granted Critical
Publication of CN112445514B publication Critical patent/CN112445514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种代码评审方法及相关产品,包括:接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。本方案无须从release分支再拉出新分支,简化了操作流程,提高了代码评审效率。

Description

一种代码评审方法及相关产品
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码评审方法及相关产品。
背景技术
Git是目前最先进的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
代码评审(CodeReview):代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。
暂存区:本地对项目作出的所有修改,都会存储在暂存区。
Commit:将暂存区的修改提交到本地仓库区。其中,此时修改还完全在本地,完全不影响远端仓库的代码。
分支:Git中的分支,其实本质上仅仅是个指向commit对象的可变指针。Git会使用master作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的master分支,它在每次提交的时候都会自动向前移动。
Release分支:在产品即将发布阶段基于master分支拉的分支,通常这个分支会进行锁线的操作,开发者无法直接提交,需要通过代码评审才能提交。
cherry pick:挑选一个需要的commit进行操作。它可以用于将在其他分支上的commit修改,移植到当前的分支。
对于有main分支以及release分支的Git,其中mian为开发分支,release为发布分支,现有技术中在进行代码评审时需要开发人员执行以下操作:首先从release分支拉出一个新分支,然后将要从main分支合入release分支的代码cherry pick到新分支,再发起新分支和release分支的代码评审,当评审通过后将新分支merge到主线,并删除新分支。然而上述代码评审方式流程冗长,操作复杂,每次开发人员发起代码评审都需要耗费大量精力进行处理;并且由于流程过长,中间环节很容易出问题,甚至导致漏合代码、错合代码的情况。
发明内容
本申请实施例提供一种代码评审方法及相关产品,能够提高代码评审的效率。
本申请实施例的第一方面提供了一种代码评审方法,包括:
接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;
当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
可选的,所述根据所述第一release代码分支和所述第二release代码分支生成比较文件,包括:
获取初始提交记录,所述初始提交记录为所述master代码分支合入第二release代码分支之前的最后一次提交记录;
获取自所述初始提交记录之后的W个提交记录;
调用预设算法对所述W个提交记录进行处理以得到比较文件。
可选的,所述W个提交记录包括第一提交记录,所述调用预设算法对所述W个提交记录进行处理以得到比较文件,包括:
将所述第一提交记录和所述第二release代码分支分别进行处理以得到第一文本和第二文本;
分别获取所述第一文本的长度n与所述第二文本的长度m,并将所述第一文本与所述第二文本均置于预设坐标系x-0-y;
获取从坐标(0,0)到达坐标(n,m)的目标路径;
根据所述目标路径对应的文本生成所述比较文件。
可选的,所述获取从坐标(0,0)到达坐标(n,m)的目标路径,包括:
从路径长度a为0开始,依次获取路径长度a=i时从坐标(0,0)可到达的坐标数组;
获取所述坐标数组中每个坐标分别对应的b,其中,b=x-y;
获取不同a,b分别对应的坐标数组中最大x对应的坐标,直到所述路径长度a满足从坐标(0,0)到达坐标(n,m);
将所述不同坐标数组中最大x对应的坐标按照顺序进行连接以得到所述目标路径。
进一步,所述将所述比较文件发送至代码评审人,包括:
解析所述比较文件以获取所述比较文件中每个提交记录的信息;
将所述每个提交记录的信息进行合并以得到初始比较文件;
对所述初始比较文件进行处理以得到图形文件;
将所述图形文件记为比较文件并发送至所述代码评审人。
进一步,所述当接收到所述代码评审人返回的评审通过的消息之后,所述向所述请求者发送代码评审完成的消息之前,包括:
向所述请求者开启代码分支提交权限,以便将所述比较文件合入所述第二release分支;
当检测到所述比较文件合入所述第二release分支之后,关闭所述代码分支提交权限。
本申请实施例的第二方面提供了一种代码评审装置,包括:
接收模块,用于接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
比较模块,用于根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;
发送模块,用于当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
可选的,还包括处理模块,用于:
向所述请求者开启代码分支提交权限,以便将所述比较文件合入所述第二release分支;当检测到所述比较文件合入所述第二release分支之后,关闭所述代码分支提交权限。
本申请实施例的第三方面提供了一种服务器,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行所述的方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现所述的方法。
实施本申请实施例,至少具有如下有益效果:
通过本申请实施例,通过从远端获取release代码分支至本地,将本地修改的master代码分支合入该release代码分支,并对所得代码分支与远端获取的release代码分支进行处理生成比较文件,以发送给代码评审人进行评审。本方案通过生成本地release分支和远端release分支差异集,进而来进行评审。评审通过后,再将差异集中的提交记录合入的本地代码评审方案。本方案无须从release分支再拉出新分支,简化了操作流程,有效减少了代码评审过程中需要开发人员操作的部分,提高了代码评审效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为本发明实施例提供的一种代码评审方法的交互示意图;
图2是本发明实施例提供的一种代码评审方法的网络架构示意图;
图3a是本发明实施例提供的一种代码评审方法的流程示意图;
图3b是本发明实施例提供的一种生成可读的代码差异界面的示意图;
图4是本发明实施例提供的一种应用diff算法的坐标示意图;
图5是本发明实施例提供的一种代码评审方法的流程示意图;
图6是本发明实施例提供的一种服务器的结构示意图;
图7是本发明实施例提供的一种代码评审装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
请参阅图1,图1为本申请实施例提供了一种代码评审方法的交互示意图。如图1所示,其可包括服务器101、请求者102和代码评审人103,其中,服务器101接收请求者102发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;所述服务器101根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人103;当接收到所述代码评审人103返回的评审通过的消息,所述服务器101向所述请求者102发送代码评审完成的消息,以响应所述代码评审请求。其中,当接收到所述代码评审人103返回的评审通过的消息之后,所述服务器101向所述请求者102发送代码评审完成的消息之前,还包括:向所述请求者102开启代码分支提交权限,以便将所述比较文件合入所述第二release分支;当检测到所述比较文件合入所述第二release分支之后,关闭所述代码分支提交权限。
通过本申请实施例,通过从远端获取release代码分支至本地,将本地修改的master代码分支合入该release代码分支,并对所得代码分支与远端获取的release代码分支进行处理生成比较文件,以发送给代码评审人进行评审。本方案通过生成本地release分支和远端release分支差异集,进而来进行评审。评审通过后,再将差异集中的提交记录合入的本地代码评审方案。本方案无须从release分支再拉出新分支,简化了操作流程,有效减少了代码评审过程中需要开发人员操作的部分,提高了代码评审效率。
请参阅图2,图2为本申请实施例提供了一种代码评审方法的网络架构示意图。其中,该网络架构可以包括多个服务器,如图2所示,具体包括第一服务器200a、第二服务器200b、第三服务器200c,其中,第一服务器200a可以为用于接送代码评审请求并对代码评审请求进行处理并发送给代码评审方进行代码评审的服务器;第二服务器200b可以为请求方服务器;第三服务器200c可以为代码评审方服务器。具体地,第一服务器200a从第二服务器200b获取代码评审请求,其中,代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;第一服务器200a根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至第三服务器200c,第三服务器200c进行代码评审后,将评审结果发送给第一服务器200a;当第一服务器200a接收到第三服务器200c返回的评审通过的消息后,第一服务器200a向第二服务器200b发送代码评审完成的消息,以响应所述代码评审请求。
请参阅图3a,图3a是本发明实施例提供的一种代码评审方法的流程示意图。如图3a所示,其具体包括步骤301-303,其中:
301、服务器接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
本方案基于线上版本由于某个应用的版本更新,如输入法的版本更新,导致系统出现大量的闪退现象。为了解决该问题,需要在release分支上提交一个修复方案,但是由于release分支是稳定的,不能直接提交在上面,所以只能在本地master分支上面先修改,然后在代码评审通过之后再自动合入release分支,以解决上述问题。
基于此,本方案对于代码评审方法进行改进,其中,服务器接收请求者发送的代码评审请求,在请求者向服务器发起代码评审请求之前,请求者通过向远端仓库发送请求获取远端release(代码)分支,即第二release代码分支,然后将修改后的本地的master分支合入该第二release分支以得到第一release分支。请求者基于该第一release分支,向服务器发起代码评审请求。
302、所述服务器根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;
通过代码评审发现潜在的问题是代码评审主要的目的。其中,通过获取第一release代码分支和第二release代码分支之间的差异,进而确认上述修改是否可行。
其中,如所述服务器根据所述第一release代码分支和所述第二release代码分支生成补丁patch。其中,patch多指补丁的意思比如内存补丁、文件补丁等,也是电脑命令程序的一种。patch命令读取如何更改文件的源文件指示信息,然后应用这些更改。源文件包含由diff命令产生的差别列表(或者diff列表)。差异列表是比较两个文件和构建关于如何纠正差别的指示信息的结果。服务器可将patch发送给代码评审人。具体地,可生成可读的代码差异界面,如图3b所示,以方便代码评审人进行评审,提高代码评审的效率。
其中,代码评审人进行代码评审的工作可包括以下内容:编码规范问题、代码结构问题(如重复代码、分层不当)、工具或框架使用不当、实现问题(如实现过于复杂、代码可读性不佳、扩展性不好)、测试问题(如测试覆盖度不够、可测试性不好等)。
当代码评审人确定上述比较文件满足预设要求,通过代码评审后,则向服务器发送评审通过的消息。
具体地,所述根据所述第一release代码分支和所述第二release代码分支生成比较文件,包括步骤A11-A13:
A11、获取初始提交记录,所述初始提交记录为所述master代码分支合入第二release代码分支之前的最后一次提交记录;
其中,服务器从本地仓库区获取所述master代码分支合入第二release代码分支之前的最后一次commit提交记录;
A12、获取自所述初始提交记录之后的W个提交记录;W为正整数。
将自所述master代码分支合入第二release代码分支之前的最后一次commit提交记录之后的所有提交记录采用预设算法进行处理以得到比较文件,如patch;
A13、调用预设算法对所述W个提交记录进行处理以得到比较文件。
上述预设算法包括diff算法。diff的功能就是用来比较两个文件的不同,然后记录下来,即diff补丁。其中,分别对上述W个提交记录进行处理,并将处理结果合并以得到比较文件。
其中,所述W个提交记录包括第一提交记录,所述调用预设算法对所述W个提交记录进行处理以得到比较文件,包括步骤B11-B14:
B11、将所述第一提交记录和所述第二release代码分支分别进行处理以得到第一文本和第二文本;
其中,第一提交记录和第二release代码分支可能存在版本格式等不一致的问题,直接调用diff算法进行处理不容易进行操作,因此可分别进行处理以得到相同格式的文本,便于比较。
B12、分别获取所述第一文本的长度n与所述第二文本的长度m,并将所述第一文本与所述第二文本均置于预设坐标系x-0-y;
上述文本的长度可以以行为单位进行计量。如图4所示,可构建一坐标,其中横轴是第一文本内容,纵轴是第二文本内容,如可以将文本字符串中的字符依次分别排列在x轴和y轴,那么每一条从左上角(0,0)到右下角(n,m)的路径,都表示一个diff。其中,向右表示删除,向下表示新增,对角线则表示原内容保持不动,即横纵坐标对应相同内容时。上述预设坐标系x-0-y可以以(0,0),(n,0),(0,m),(n,m)为四个端点。其中(0,0)位于左上角,(n,m)位于右下角。
B13、获取从坐标(0,0)到达坐标(n,m)的目标路径;
其中,上述目标路径可以是最短路径;其也可以是路径长度最短,且路径为先向右,再向下(先删除,后新增)。其中,走对角线不计入步数。
B14、根据所述目标路径对应的文本生成所述比较文件。
根据上述目标路径对应的文本,即对应表示增加或者删除,或者修改等,进而生成patch。如,获取到向右表示删除,向下表示增加等,则根据路径的具体指示进而生成比较文件。
进一步,所述获取从坐标(0,0)到达坐标(n,m)的目标路径,包括步骤C11-C14:
C11、从路径长度a为0开始,依次获取路径长度a=i时从坐标(0,0)可到达的坐标数组;
即获取当a=0时,坐标数组包括(0,0);
当a=1时,坐标数组包括(0,1),(1,0);
当a=2时,坐标数组包括(2,4),(2,2),(2,0);以此类推;
C12、获取所述坐标数组中每个坐标分别对应的b,其中,b=x-y;
C13、获取不同a,b分别对应的坐标数组中最大x对应的坐标,直到所述路径长度a满足从坐标(0,0)到达坐标(n,m);
即第一数组对应:a=0,b=0时,对应坐标为(0,0);
第二数组对应:a=1,b=-1时,对应坐标为(0,1);a=1,b=1时,对应坐标为(1,0);
第三数组对应:a=2,b=-2时,对应坐标为(2,4);a=2,b=0时,对应坐标为(2,2);a=2,b=2时,对应坐标为(3,1),
以此类推;
C14、将所述不同坐标数组中最大x对应的坐标按照顺序进行连接以得到所述目标路径。
即分别获取不同数组中最大x对应的坐标:(0,0),(1,0),(3,1)···即目标路径为(0,0)->(1,0)->(3,1)->···
303、当接收到所述代码评审人返回的评审通过的消息,所述服务器向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
通过本申请实施例,通过从远端获取release代码分支至本地,将本地修改的master代码分支合入该release代码分支,并对所得代码分支与远端获取的release代码分支进行处理生成比较文件,以发送给代码评审人进行评审。本方案通过生成本地release分支和远端release分支差异集,进而来进行评审。评审通过后,再将差异集中的提交记录合入的本地代码评审方案。本方案无须从release分支再拉出新分支,简化了操作流程,提高了代码评审效率。
请参阅图5,图5是本发明实施例提供的一种代码评审方法的流程示意图。如图5所示,其具体包括步骤501-509,其中:
501、服务器接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
其中,首先需要切换到release分支,并将远端release线代码拉至本地,相关git代码为:
//切换分支到release
git checkout release
//拉release线代码下来
git pull origin release
然后将本地master分支需要提交到release的相关提交cherry pick到本地的release分支:
如git cherry-pick 38df2…9efef23//假设要提交的代码的commit号为38df2到9efef23。
502、所述服务器根据所述第一release代码分支和所述第二release代码分支生成比较文件;
其中,所述服务器获取release线上cherry pick前的最近一次commit记录,并将自那次commit后的所有提交使用diff算法打成一个patch。
具体地,diff算法步骤可包括:
首先,定义参数a和b,a代表路径的长度,b代表当前坐标x-y的值。定义一个“最优坐标”的概念,最优坐标表示a和b值固定的情况下,x值最大的坐标。其中x大,表示向右走的多,表示优先删除。
计算流程如下:
S1、迭代a,a为0到n+m,n和m代表要对比的文本和目标文本的长度(以行为单位);
S2、每个a的迭代里面,再去迭代b,b的取值范围为-a到a,如可设步长为2,也就是-a,-a+2,-a+2+2…
S3、使用一个数组v,可以b值为索引,存储最优坐标的x;
S4、将每个a对应的数组v存储起来;
S5、当找到一个a和b,到达目标坐标(n,m)时就跳出循环;
S6、分别获取不同数组中最大x对应的坐标,依次连接得到目标路径;根据目标路径对应的文本生成比较文件如patch。
其中,根据上述算法处理打出来的patch中包含了打进去的每次提交记录的相关信息,包括commit id,提交日志,提交的更改信息等。
503、解析所述比较文件以获取所述比较文件中每个提交记录的信息;
504、将所述每个提交记录的信息进行合并以得到初始比较文件;
505、对所述初始比较文件进行处理以得到图形文件;
506、将所述图形文件记为比较文件并发送至所述代码评审人。
通过解析所得到的patch包,将里面每个commit的信息整理出来;然后将其进行合并处理得到所有产生变化的文件,并将文件更改为方便查看的图形界面,然后发送至所述代码评审人。
507、当接收到所述代码评审人返回的评审通过的消息,向所述请求者开启代码分支提交权限,以便将所述比较文件合入所述第二release分支;
508、当检测到所述比较文件合入所述第二release分支之后,关闭所述代码分支提交权限;
当评审通过后,针对请求者临时打开提交release分支的提交权限,以将patch合入release分支,合入结束后则收回权限。
509、向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
通过本申请实施例,通过从远端获取release代码分支至本地,将本地修改的master代码分支合入该release代码分支,并对所得代码分支与远端获取的release代码分支进行处理生成比较文件,以发送给代码评审人进行评审。本方案通过生成本地release分支和远端release分支差异集,进而来进行评审。评审通过后,再将差异集中的提交记录合入的本地代码评审方案。本方案无须从release分支再拉出新分支,简化了操作流程,有效减少了代码评审过程中需要开发人员操作的部分,提高了代码评审效率。
与上述实施例一致的,请参阅图6,图6为本申请实施例提供的一种终端的结构示意图,如图所示,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,上述程序包括用于执行以下步骤的指令;
接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;
当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
通过本申请实施例,通过从远端获取release代码分支至本地,将本地修改的master代码分支合入该release代码分支,并对所得代码分支与远端获取的release代码分支进行处理生成比较文件,以发送给代码评审人进行评审。本方案通过生成本地release分支和远端release分支差异集,进而来进行评审。评审通过后,再将差异集中的提交记录合入的本地代码评审方案。本方案无须从release分支再拉出新分支,简化了操作流程,提高了代码评审效率。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
上述程序还包括用于执行:
获取初始提交记录,所述初始提交记录为所述master代码分支合入第二release代码分支之前的最后一次提交记录;获取自所述初始提交记录之后的W个提交记录;调用预设算法对所述W个提交记录进行处理以得到比较文件。
上述程序还包括用于执行:
将所述第一提交记录和所述第二release代码分支分别进行处理以得到第一文本和第二文本;分别获取所述第一文本的长度n与所述第二文本的长度m,并将所述第一文本与所述第二文本均置于预设坐标系x-0-y;获取从坐标(0,0)到达坐标(n,m)的目标路径;根据所述目标路径对应的文本生成所述比较文件。
上述程序还包括用于执行:
从路径长度a为0开始,依次获取路径长度a=i时从坐标(0,0)可到达的坐标数组;获取所述坐标数组中每个坐标分别对应的b,其中,b=x-y;获取不同a,b分别对应的坐标数组中最大x对应的坐标,直到所述路径长度a满足从坐标(0,0)到达坐标(n,m);将所述不同坐标数组中最大x对应的坐标按照顺序进行连接以得到所述目标路径。
上述程序还包括用于执行:
解析所述比较文件以获取所述比较文件中每个提交记录的信息;将所述每个提交记录的信息进行合并以得到初始比较文件;对所述初始比较文件进行处理以得到图形文件;将所述图形文件记为比较文件并发送至所述代码评审人。
本申请实施例可以根据上述方法示例对终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与上述一致的,请参阅图7,图7为本申请实施例提供了一种代码评审装置的结构示意图。其包括接收模块701、比较模块702和发送模块703,其中:
接收模块701,用于接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
比较模块702,用于根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;
发送模块703,用于当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
其中,具体地,还包括处理模块,用于:
向所述请求者开启代码分支提交权限,以便将所述比较文件合入所述第二release分支;当检测到所述比较文件合入所述第二release分支之后,关闭所述代码分支提交权限。
可以看出,通过本申请实施例,通过从远端获取release代码分支至本地,将本地修改的master代码分支合入该release代码分支,并对所得代码分支与远端获取的release代码分支进行处理生成比较文件,以发送给代码评审人进行评审。本方案通过生成本地release分支和远端release分支差异集,进而来进行评审。评审通过后,再将差异集中的提交记录合入的本地代码评审方案。本方案无须从release分支再拉出新分支,简化了操作流程,提高了代码评审效率。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种代码评审方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种代码评审方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在申请明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (8)

1.一种代码评审方法,其特征在于,包括:
接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
根据所述第一release代码分支和所述第二release代码分支生成比较文件,包括:获取初始提交记录,所述初始提交记录为所述master代码分支合入第二release代码分支之前的最后一次提交记录;获取自所述初始提交记录之后的W个提交记录,所述W个提交记录包括第一提交记录;将所述第一提交记录和所述第二release代码分支分别进行处理以得到第一文本和第二文本;分别获取所述第一文本的长度n与所述第二文本的长度m,并将所述第一文本与所述第二文本均置于预设坐标系x-0-y;获取从坐标(0,0)到达坐标(n,m)的目标路径;根据所述目标路径对应的文本生成所述比较文件;
将所述比较文件发送至代码评审人;
当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
2.根据权利要求1所述的方法,其特征在于,所述获取从坐标(0,0)到达坐标(n,m)的目标路径,包括:
从路径长度a为0开始,依次获取路径长度a=i时从坐标(0,0)可到达的坐标数组;
获取所述坐标数组中每个坐标分别对应的b,其中,b=x-y;
获取不同a,b分别对应的坐标数组中最大x对应的坐标,直到所述路径长度a满足从坐标(0,0)到达坐标(n,m);
将不同坐标数组中最大x对应的坐标按照顺序进行连接以得到所述目标路径。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述比较文件发送至代码评审人,包括:
解析所述比较文件以获取所述比较文件中每个提交记录的信息;
将所述每个提交记录的信息进行合并以得到初始比较文件;
对所述初始比较文件进行处理以得到图形文件;
将所述图形文件记为比较文件并发送至所述代码评审人。
4.根据权利要求1所述的方法,其特征在于,所述当接收到所述代码评审人返回的评审通过的消息之后,所述向所述请求者发送代码评审完成的消息之前,包括:
向所述请求者开启代码分支提交权限,以便将所述比较文件合入所述第二release代码分支;
当检测到所述比较文件合入所述第二release代码分支之后,关闭所述代码分支提交权限。
5.一种代码评审装置,其特征在于,包括:
接收模块,用于接收请求者发送的代码评审请求,其中,所述代码评审请求携带第一release代码分支,所述第一release代码分支为master代码分支合入第二release代码分支所得到的代码分支;
比较模块,用于根据所述第一release代码分支和所述第二release代码分支生成比较文件,并将所述比较文件发送至代码评审人;
所述比较模块,在所述根据所述第一release代码分支和所述第二release代码分支生成比较文件时,具体用于:获取初始提交记录,所述初始提交记录为所述master代码分支合入第二release代码分支之前的最后一次提交记录;获取自所述初始提交记录之后的W个提交记录,所述W个提交记录包括第一提交记录;将所述第一提交记录和所述第二release代码分支分别进行处理以得到第一文本和第二文本;分别获取所述第一文本的长度n与所述第二文本的长度m,并将所述第一文本与所述第二文本均置于预设坐标系x-0-y;获取从坐标(0,0)到达坐标(n,m)的目标路径;根据所述目标路径对应的文本生成所述比较文件;
发送模块,用于当接收到所述代码评审人返回的评审通过的消息,向所述请求者发送代码评审完成的消息,以响应所述代码评审请求。
6.根据权利要求5所述的装置,其特征在于,还包括处理模块,用于:
向所述请求者开启代码分支提交权限,以便将所述比较文件合入所述第二release代码分支;当检测到所述比较文件合入所述第二release代码分支之后,关闭所述代码分支提交权限。
7.一种服务器,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1至4任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至4任意一项所述的方法。
CN201910836827.9A 2019-09-05 2019-09-05 一种代码评审方法及相关产品 Active CN112445514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910836827.9A CN112445514B (zh) 2019-09-05 2019-09-05 一种代码评审方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910836827.9A CN112445514B (zh) 2019-09-05 2019-09-05 一种代码评审方法及相关产品

Publications (2)

Publication Number Publication Date
CN112445514A CN112445514A (zh) 2021-03-05
CN112445514B true CN112445514B (zh) 2024-06-07

Family

ID=74733509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910836827.9A Active CN112445514B (zh) 2019-09-05 2019-09-05 一种代码评审方法及相关产品

Country Status (1)

Country Link
CN (1) CN112445514B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113553262B (zh) * 2021-07-22 2023-08-11 网易(杭州)网络有限公司 一种代码审核方法、装置、电子设备及存储介质
WO2024016690A1 (zh) * 2022-07-22 2024-01-25 华为云计算技术有限公司 消息发送方法、代码显示方法、装置及相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905990A (en) * 1997-06-23 1999-05-18 International Business Machines Corporation File system viewpath mechanism
EP2784665A1 (en) * 2013-03-28 2014-10-01 Fujitsu Limited Program and version control method
CN105302716A (zh) * 2014-07-30 2016-02-03 腾讯科技(深圳)有限公司 合流开发模式下的测试方法、装置
CN107766075A (zh) * 2016-08-22 2018-03-06 平安科技(深圳)有限公司 代码合并的处理方法及装置
CN109901876A (zh) * 2019-02-28 2019-06-18 携程旅游信息技术(上海)有限公司 代码评审方法、系统、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905990A (en) * 1997-06-23 1999-05-18 International Business Machines Corporation File system viewpath mechanism
EP2784665A1 (en) * 2013-03-28 2014-10-01 Fujitsu Limited Program and version control method
CN105302716A (zh) * 2014-07-30 2016-02-03 腾讯科技(深圳)有限公司 合流开发模式下的测试方法、装置
CN107766075A (zh) * 2016-08-22 2018-03-06 平安科技(深圳)有限公司 代码合并的处理方法及装置
CN109901876A (zh) * 2019-02-28 2019-06-18 携程旅游信息技术(上海)有限公司 代码评审方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN112445514A (zh) 2021-03-05

Similar Documents

Publication Publication Date Title
TWI582616B (zh) 藉由實例格式化資料
US11769065B2 (en) Distributed system generating rule compiler engine by determining a best matching rule based on concrete parameterization with declarative rules syntax
CN109951547B (zh) 事务请求并行处理方法、装置、设备和介质
US8880588B2 (en) Technique for stateless distributed parallel crawling of interactive client-server applications
US9400962B2 (en) Architecture for distributed, parallel crawling of interactive client-server applications
US8832065B2 (en) Technique for coordinating the distributed, parallel crawling of interactive client-server applications
CN104572067A (zh) 用于由源代码指定的用户界面的可视化的方法和系统
US20120109931A1 (en) Technique for compression of state information in the crawling of interactive client-server applications
CN112445514B (zh) 一种代码评审方法及相关产品
CN113791765B (zh) 云服务的资源编排方法、装置、设备及存储介质
CN110659569A (zh) 电子签名方法、装置、存储介质及电子设备
CN110851355B (zh) 前端工程的实施方法及装置、存储介质、电子设备
JP2005122560A (ja) デッドロック事前検出プログラム
CN114048583A (zh) 一种基于gim模型扩展实物id的应用方法和系统
US20120109928A1 (en) Synchronization scheme for distributed, parallel crawling of interactive client-server applications
CN112433935A (zh) 测试方法、装置、电子设备及存储介质
CN115115062A (zh) 机器学习模型建立方法、相关装置及计算机程序产品
CN116263659A (zh) 数据处理方法、装置、计算机程序产品、设备及存储介质
CN109634500B (zh) 一种用户资料填写方法、装置、终端设备及存储介质
CN113656022A (zh) 软件开发方法、装置、计算机设备和存储介质
CN109446103A (zh) 一种CIM Provider测试方法及装置
CN111124390A (zh) 复核页面生成方法、装置、存储介质及电子设备
CN112860780B (zh) 数据导出方法、装置和终端设备
US20230057746A1 (en) User constrained process mining
CN113626409B (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
GR01 Patent grant