目标代码的选取方法及装置与流程

文档序号:12119479阅读:256来源:国知局
目标代码的选取方法及装置与流程
本申请涉及计算机
技术领域
,尤其涉及一种目标代码的选取方法及装置。
背景技术
:在代码的日常开发工作中,当开发人员对已经提交的分支代码进行了更新(如,问题(bug)修复等),特别是,该分支代码已经被多个其它子系统调用,并需要再次提交时,通常需要同时提交上述分支代码中更新部分相关的描述信息,而该描述信息是上述其它子系统修改本地调用接口的重要依据,描述信息的漏提,通常会引起其它子系统不能及时地修改本地调用接口,从而不能正确调用上述分支代码,进一步地,会导致由该分支代码与其它子系统共同实现的业务功能的异常。因此,如何快速而正确的选取出漏提描述信息的分支代码就成为本申请要解决的技术问题。技术实现要素:本申请实施例提供了一种目标代码的选取方法及装置,可以快速而正确地选取出漏提描述信息的目标代码。第一方面,提供了一种目标代码的选取方法,该方法包括:获取分支代码对应的代码修改列表以及版本号,其中,所述代码修改列表用于记录所述分支代码中的已变更代码;根据所述版本号,查找所述已变更代码对应的第一变更记录信息;若未查找到所述第一变更记录信息,则将所述已变更代码选取为目标代码。第二方面,提供了一种目标代码的选取装置,该装置包括:获取单元、查找单元和选取单元;所述获取单元,用于获取分支代码对应的代码修改列表以及版本号,其中,所述代码修改列表用于记录所述分支代码中的已变更代码;所述查找单元,用于根据所述版本号,查找所述已变更代码对应的第一变更记录信息;所述选取单元,用于若所述查找单元未查找到所述第一变更记录信息,则将所述已变更代码选取为目标代码。本申请提供的目标代码的选取方法及装置,获取分支代码对应的代码修改列表以及版本号,其中,所述代码修改列表用于记录所述分支代码中的已变更代码;根据所述版本号,查找所述已变更代码对应的第一变更记录信息;若未查找到所述第一变更记录信息,则将所述已变更代码选取为目标代码。由此,可以实现自动地选取出目标代码,提高了目标代码的选取速度。附图说明图1为本申请一种实施例提供的目标代码的选取方法流程图;图2为本申请另一种实施例提供的目标代码的选取装置示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。为便于对本申请实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本申请实施例的限定。本申请实施例提供的目标代码的选取方法及装置,适用于从待合并到主干代码的分支代码中选取目标代码的场景,尤其适用于从开发代码管理工具管理的待合并到主干代码的分支代码中选取目标代码的场景。此处,开发代码管理工具可以包括:分支代码管理系统、检测系统和MVN变更申请管理系统,其中,分支代码管理系统用于对分支代码进行管理,如生成分支代码的代码修改列表及版本号等;检测系统用于检测已变更的分支代码是否已提交对应的变更记录信息;MVN变更申请管理系统用于管理已提交的变更记录信息。需要说明的是,上述主干代码是指开发代码管理工具(如,MAVEN)管理的项目开发代码的主体,是从项目开始到当前都处于活动的状态,从这里可以获得项目最新的源代码和几乎所有的历史变更记录信息;而分支代码是指从主干代码中的某个点分离出来的代码拷贝,在不影响主干代码的前提下,可以对分支代码进行重大的bug修复或者实验性质的开发,如果达到了预期的目的,通常将变更后的分支代码合并到主干代码中去。上述分支代码中涵盖了两层的代码,即涵盖了门面(facade)层的代码和实现层的代码,其中,facade层的代码主要用于为其它子系统提供统一的接口,包含其对外提供的接口的实现类,此处的实现类可以是一个或者多个;而实现层的代码主要用于对facade层的代码中包含的实现类进行具体的实现。需要进一步说明的是,在上述对分支代码进行重大的bug修复或者实验性质的开发时,如果对分支代码中facade层的代码进行了修改,如在接口的实现类:类A中的方法X新增了参数,则在将上述分支代码合并入主干代码时,可以向MVN变更申请管理系统提交对应的变更记录信息,该变更记录信息中包含了facade层的代码中发生变更的实现类以及该实现类变更的描述信息。如,该变更记录信息可以包括类A和描述信息:类A中的方法X新增了参数。此处的变更记录信息是由开发人员编写的。具体地,在MAVEN中,分支代码中facade层的代码通常是通过压缩(jar)包的形式存储的,该jar包唯一地对应一个版本号(即分支代码管理系统为分支代码生成的版本号),其它子系统通过引用该版本号来对该jar包的调用。此处的版本号可以包含jar包生成的时间(也即发布时间),以唯一地区分一个jar包。可以理解的是,当分支代码中facade层的代码发生变更时,可以重新进行打包,且重新打包生成的jar包的版本号也要进行相应的更新。如,假设原始jar包生成的时间是2015年6月1日,则原始jar包的版本号可以为1.0.0.20150601,即以生成的时间结尾。而当重新打包的时间是2015年8月1日时,则重新打包生成的jar包的版本号可以变更为1.0.0.20150801。在MVN变更申请管理系统检测到有新的变更记录信息时,检测调用该变更记录信息对应的jar包的其它子系统(即检测引用了jar包的版本号的其它子系统),并向其它子系统发送通知消息,该通知消息用于指示其它子系统根据与该变更记录信息对应的jar包的最新的版本号,升级其引用的jar包的版本号,并修改本地调用接口函数,以实现对上述jar包的正确调用。图1为本申请一种实施例提供的目标代码的选取方法流程图。所述方法的执行主体可以为具有处理能力的设备:服务器或者系统或者装置,例如,检测系统,如图1所示,所述方法具体可以包括:步骤110,获取分支代码对应的代码修改列表以及版本号,其中,所述代码修改列表用于记录所述分支代码中的已变更代码。此处,分支代码可以是分支代码管理系统中的任一分支代码。即当分支代码管理系统在接收到完成对分支代码的编辑指令之后,自动为该分支代码生成对应的版本号,该版本号的定义同jar包的版本号的定义;此外,还自动检测该分支代码的已变更代码,即自动检测该分支代码中facade层的代码的已变更代码,生成对应的代码修改列表,该代码修改列表可以包括分支代码中的已变更代码。可选地,所述已变更代码包括至少一个类。该至少一个类即为facade层的代码中的实现类。举例来说,第一分支代码的facade层的代码中的实现类包括:类A、类B、类C、类D、类E和类F,当该第一分支代码发生变更时,分支代码管理系统为该已变更的第一分支代码生成的对应的版本号为:20150801,而该第一分支代码对应的代码修改列表如表1所示。表1已变更代码{类E,类F}分支代码管理系统在为发生变更的第一分支代码生成对应的版本号以及代码修改列表之后,向检测系统发送合并请求,该合并请求可以包括上述代码修改列表和版本号,也即检测系统获取第一分支代码对应的代码修改列表以及版本号。步骤120,根据所述版本号,查找所述已变更代码对应的第一变更记录信息。其中,步骤120中根据所述版本号,查找所述已变更代码对应的第一变更记录信息,包括:步骤X:根据所述版本号,获取所述分支代码对应的第二变更记录信息。此处,检测系统首先向MVN变更申请管理系统发送获取指令,该获取指令可以包括分支代码对应的版本号,由MVN变更申请管理系统根据该版本号查找并返回分支代码对应的第二变更记录信息,也即检测系统获取分支代码对应的第二变更记录信息。举例来说,假设MVN变更申请管理系统管理的前述例子中的第一分支代码对应的变更记录信息如表2所示。表2其中,版本号:20150601和20150801分别是第一分支代码在facade层的代码发生变更时生成的两个版本号,上述版本号与第二记录信息一一对应,即根据确定的一个版本号,可以唯一地获取一条第二变更记录信息。如,当第一分支代码的版本号为20150801时,则获取的第一分支代码对应的第二变更记录信息为表2中的第二行记录。步骤Y:从所述第二变更记录信息中查找所述已变更代码对应的第一变更记录信息。如,检测系统从表2中的第二行记录:{类E:{A方法中新增参数Y,删除B方法}}中查找已变更代码对应的第一变更记录信息。此处,“类E”为第二变更记录信息中包括的类,而{A方法中新增参数Y,删除B方法}表示类E的第一变更记录信息。可选地,当所述已变更代码包括至少一个类时,则查找所述已变更代码对应的第一变更记录信息,包括:查找所述至少一个类中每个类对应的第一变更记录信息。如前述例子中,当已变更代码包括类E和类F时,则从表2的第二行记 录中查找类E和类F对应的第一变更记录信息。可选地,所述第二变更记录信息包含一个或者多个类;所述从所述第二变更记录信息中查找所述已变更代码对应的第一变更记录信息,包括:步骤A:将所述至少一个类中第一个类与所述第二变更记录信息中包含的一个或多个类依次进行比对,当比对一致时,则认为查找到所述第一个类对应的第一变更记录信息;否则,认为未查找到所述第一个类对应的第一变更记录信息;步骤B:重复执行步骤A,直至查找到或未查找到所述至少一个类中每个类对应的第一变更记录信息。如前述例子,将表1中的两个类中的第一个类:类E与表2中的第二记录中的类E进行比对,因为两者比对一致,则认为查找到第一个类;表1中,类E对应的第一变更记录信息为:{A方法中新增参数Y,删除B方法};而当将表1中的两个类中的第二个类:类F与表2中的第二行记录中的类E进行比对,因为比对不一致,且表2中的第二行记录中不再包括其它的类(也即第二变更记录信息只包括一个类),因此,未查找到类F对应的第一变更记录信息。因为表1中只包括两个类,所以上述过程已经查找到或未查找到代码变更列表中的至少一个类中每个类对应的第一变更记录信息。步骤130,若未查找到所述第一变更记录信息,则将所述已变更代码选取为目标代码。如前述例子中,因为未查找到类F对应的第一变更记录信息,所以将类F选取为目标代码。需要说明的是,检测系统在选取目标代码之后,可以向分支代码管理系统返回该目标代码,分支代码管理系统在接收到上述目标代码之后,向目标代码的负责人发送提醒信息。在一种实现方式中,可以向目标代码的负责人发送邮件,以提醒负责人提交该目标代码的第一变更记录信息。还需要进一步说明的是,本申请实施例中,分支代码管理系统若接收到 上述目标代码,则不将分支代码合并入主干代码。由此,避免了现有技术,在分支代码漏提变更记录信息的情况下,只是不对该分支代码中facade层的代码进行打包,即不重新生成jar包,但还将分支代码合并入主干代码,从而导致的主干代码编译失败的问题。而且如果有其它子系统调用该分支代码时,现有技术的方法可能因为jar版本号没有升级而引发业务异常。可选地,若查找到所述第一变更记录信息,则向分支代码管理系统返回指示信息,所述指示信息用于指示所述分支代码管理系统将所述分支代码合并入主干代码。如前述例子,假设MVN变更申请管理系统管理的第一分支代码对应的变更记录信息如表3所示。表3由此,当已变更代码包括类E和类F时,则从表3的第二行记录中可以查找到类E和类F对应的第一变更记录信息,也即查找到了分支代码的第一 变更记录信息,检测系统向分支代码管理系统返回指示信息,分支代码管理系统在接收到上述指示信息之后,将分支代码合并入主干代码中。可以理解的是,当已变更代码中包括至少一个类时,只有查找到该至少一个类中的每个类对应的第一变更记录信息时,才认为查找到了已变更代码对应的第一变更记录信息,也即此时分支代码管理系统才将分支代码合并入主干代码中。综上,本申请实施例提供的目标代码的选取方法,检测系统在接收到分支代码管理系统提交的合并请求时,该合并请求中包括分支代码对应的代码修改列表以及版本号,通过调用MVN变更申请管理系统,查找代码修改列表中的已变更代码对应的第一变更记录信息,若未查找到,则将未查找到变更记录信息的已变更代码(可以只是一个类)返回给分支代码管理系统,以便分支代码管理系统不对该分支代码进行合并,且作进一步的处理;若查找到,则直接向分支代码管理系统返回指示信息,以便分支代码管理系统将分支代码合并入主干代码。由此,实现对分支代码的变更记录信息的自动检测和目标代码的自动选取,从而提高了目标代码的选取速度,且提高了分支代码的合并和编译的成功率。此外,上述在漏提已变更代码的变更记录信息的情况下,不对分支代码进行合并的方法,可以避免引发业务异常。与上述目标代码的选取方法对应地,本申请实施例还提供的一种目标代码的选取装置,如图2所示,该装置包括:获取单元201、查找单元202和选取单元203。获取单元201,用于获取分支代码对应的代码修改列表以及版本号,其中,所述代码修改列表用于记录所述分支代码中的已变更代码。查找单元202,用于根据所述版本号,查找所述已变更代码对应的第一变更记录信息。查找单元202具体用于:根据所述版本号,获取所述分支代码对应的第二变更记录信息;从所述第二变更记录信息中查找所述已变更代码对应的第 一变更记录信息。可选地,所述已变更代码包括至少一个类;查找单元202还具体用于:查找所述至少一个类中每个类对应的第一变更记录信息。可选地,所述第二变更记录信息包含一个或者多个类;所述从所述第二变更记录信息中查找所述已变更代码对应的第一变更记录信息,包括:步骤A:将所述至少一个类中第一个类与所述第二变更记录信息中包含的一个或多个类依次进行比对,当比对一致时,则认为查找到所述第一个类对应的第一变更记录信息;否则,认为未查找到所述第一个类对应的第一变更记录信息;步骤B:重复执行步骤A,直至查找到或未查找到所述至少一个类中每个类对应的第一变更记录信息。选取单元203,用于若查找单元202未查找到所述第一变更记录信息,则将所述已变更代码选取为目标代码。选取单元203具体用于:若未查找到所述至少一个类中任一类对应的第一变更记录信息,则将所述任一类选取为目标代码。可选地,所述装置还包括:发送单元204,用于若查找单元202查找到所述第一变更记录信息,则向分支代码管理系统返回指示信息,所述指示信息用于指示所述分支代码管理系统将所述分支代码合并入主干代码,其中,所述分支代码管理系统用于生成所述分支代码对应的代码修改列表以及版本号。本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。本申请提供的目标代码的选取装置,获取单元201获取分支代码对应的代码修改列表以及版本号,其中,所述代码修改列表用于记录所述分支代码中的已变更代码;查找单元202根据所述版本号,查找所述已变更代码对应的第一变更记录信息;选取单元203若未查找到所述第一变更记录信息,则 将所述已变更代码选取为目标代码。由此,可以实现自动地选取出目标代码,提高了目标代码的选取速度。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的对象及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或
技术领域
内所公知的任意其它形式的存储介质中。以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1