【技术实现步骤摘要】
一种软件代码的多变更版本合并方法及装置
本申请涉及计算机
,尤其涉及一种软件代码的多变更版本合并方法及装置。
技术介绍
在对软件代码进行变更时,若针对同一软件代码存在多种软件代码变更版本,需要将这多个软件代码变更版本进行合并。目前,Git作为一种分布式代码控制管理工具,通过Git可以实现软件代码的多变更版本合并,并输出合并后的软件代码版本。但由于Git进行软件代码的多变更版本合并的方式,是一种基于文本的软件代码合并方式。也就是以软件代码的代码行或字符为单位,检测各个软件代码变更版本针对同一代码行或字符的变更,再进行合并。这种基于文本的软件代码合并方式,无法精确地对软件代码变更版本中变更的代码进行语义分析,不能对多种软件代码变更版本进行较好的合并,输出的合并后的软件代码版本会存在大量的冲突块,其中,冲突块是指Git无法进行合并的代码区域。显然,目前软件代码的多变更版本合并的方式准确性较差。
技术实现思路
本申请提供一种软件代码的多变更版本合并方法,以提供准确的消除软件代码初步合并版本中的冲突块。第一方面,本申请提供了一种软件代码的多变更版本合并方法,该方法可以由合并装置执行,在该方法中,合并装置可以先对软件代码初步合并版本、第一软件代码变更版本以及第二软件代码变更版本进行分析。例如,可以定位软件代码初步合并版本中冲突块在第一软件代码变更版本中的第一代码区域以及该冲突块在第二软件代码变更版本中的第二代码区域,分析第一代码区域和第二代码区域的变更意图。 >在确定了第一代码区域和第二代码区域的变更意图之后,合并装置基于冲突消除规则集合,依据第一代码区域的变更意图和第二代码区域的变更意图消除冲突块,也就是消除冲突块中的冲突,输出消除了该冲突块的软件代码初步合并版本。合并装置可以显示消除了该冲突块的软件代码初步合并版本,以供用户查看,也可以将消除了该冲突块的软件代码初步合并版本发送给其他装置,由其他装置显示消除了该冲突块的软件代码初步合并版本。通过上述方法,合并装置不再基于文本消除软件代码初步合并版本中的冲突块,而是分析不同软件代码变更版本的变更意图,消除冲突块,能够保证冲突块消除的准确性,进一步,实现高效的软件代码的多变更版本合并。在一种可能的实现方式中,若软件代码初步合并版本中还存在一些未消除的冲突块,该合并装置可以调用预测模型消除软件代码初步合并版本中的冲突块,预测模块是预先已训练好的,能够根据输入的冲突块输出该冲突块的冲突消除方案的模型。通过上述方法,合并装置除了基于冲突消除规则消除软件代码初步合并版本中的冲突块,还能够借助预测模型消除软件代码初步合并版本中的冲突块,可以尽可能多的消除软件代码初步合并版本中的冲突块,能够保证软件代码多变更版本合并的准确性,还可以提高软件代码多变更版本的合并效率。在一种可能的设计中,软件代码初步合并版本中除一些已标注的冲突块外,还可能存在一些未预警的隐式冲突,也就是一些被忽视的冲突。为了能够发现这些冲突,合并装置可以对软件代码初步合并版本中的冲突块和单方变更块进行分析,确定单方变更块之间是否存在关联,单方变更块与冲突块之间是否存在关联,在确定单方变更块之间存在关联关系、和/或单方变更块与冲突块之间存在关联关系后,合并装置可以基于单方变更块之间的关联关系、和/或单方变更块与冲突块之间的关联关系,提示存在隐式冲突。通过上述方法,合并装置还能够发现软件代码初步合并版本中的一些隐式冲突,并进行预警,便于后续用户查看隐式冲突,对软件代码初步合并版本进行修改。在一种可能的设计中,合并装置在确定第一代码区域的变更意图时,可以先生成第一代码区域的变更动作集(简称为第一变更动作集),该第一变更动作集中包括针对原始软件代码中的原始代码区域(也即冲突块在原始软件代码对应的代码区域),第一代码区域的至少一个变更动作。之后,合并装置再调用多个变更分析器对第一变更动作集进行分析,确定第一代码区域的变更意图。类似的,合并装置在确定第二代码区域的变更意图时,可以先生成第二代码区域的变更动作集(简称为第二变更动作集),该第二变更动作集中包括针对原始软件代码中的原始代码区域,第二代码区域的至少一个变更动作。之后,合并装置再调用多个变更分析器对第二变更动作集进行分析,确定第二代码区域的变更意图。通过上述方法,合并装置基于变更动作集(第一变更动作集或第二变更动作集)确定代码变更区域(第一代码区域和第二代码区域)的变更意图,采用这种方式确定的变更意图更加准确,能够较好的理解代码变更区域需要实现的变更。在一种可能的设计中,单方变更块之间的关联关系包括下列至少一项:单方变更块之间函数的引用关系,单方变更块之间函数的修改关系(也即是否存在对同一函数的修改操作)、单方变更块之间变量的引用关系,单方变更块之间变量的修改关系(也即是否存在对同一变量的修改操作)。单方变更块与冲突块之间的关联关系包括下列至少一项:单方变更块与冲突块(也可以理解为冲突块涉及的不同软件代码变更版本的代码变更区域)之间函数的引用关系、单方变更块与冲突块之间函数的修改关系、单方变更块与冲突块之间变量的引用关系、单方变更块与冲突块之间变量的修改关系。通过上述方法,合并装置可以基于单方变更块之间的关联关系、单方变更块与冲突块之间的关联关系能够更加精确的定位到软件代码初步合并版本中的隐式冲突。在一种可能的设计中,合并装置在生成第一变更动作集时,可以先构建原始软件代码的语法树、第一软件代码变更版本的语法树以及第二软件代码变更版本的语法树;之后,再根据原始软件代码的语法树、第一软件代码变更版本的语法树确定第一变更动作集;类似的,合并装置在生成第二变更动作集时,可以先构建原始软件代码的语法树、第二软件代码变更版本的语法树以及第二软件代码变更版本的语法树;之后,再根据原始软件代码的语法树、第二软件代码变更版本的语法树确定第二变更动作集。通过上述方法,合并装置比对原始软件代码以及软件代码变更版本的语法树,可以较准确的确定出代码变更区域所执行的变更动作,产生变更动作集。第二方面,本申请实施例还提供了一种合并装置,有益效果可以参见第一方面的描述此处不再赘述。该装置具有实现上述第一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述装置的结构中包括意图理解模块、显式冲突消除模块和隐式冲突预警模块。这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。第三方面,本申请实施例还提供了一种计算设备,所述计算设备包括处理器和存储器,还可以包括通信接口以及显示屏,所述处理器执行所述存储器中的程序指令执行上述第一方面或第一方面任一可能的实现方式提供的方法。所述存储器与所述处理器耦合,其保存确定交通流量的过程中必要的程序指令和数据。所述通信接口,用于与其他设备进行通信,例如接收本文档来自技高网...
【技术保护点】
1.一种软件代码的多变更版本合并方法,其特征在于,该方法包括:/n分析软件代码初步合并版本中的冲突块在第一软件代码变更版本中的第一代码区域和在第二软件代码变更版本中的第二代码区域,确定所述第一代码区域的变更意图和所述第二代码区域的变更意图,其中,所述第一软件代码变更版本和所述第二软件代码变更版本由原始软件代码变更后获取;/n基于冲突消除规则集合,根据所述第一代码区域的变更意图和所述第二代码区域的变更意图消除所述冲突块,所述冲突消除规则集合中包括至少一个冲突消除规则,每个冲突消除规则记录了对冲突块,合并不同软件代码变更版本中的代码变更区域所采用的冲突消除方案。/n
【技术特征摘要】
1.一种软件代码的多变更版本合并方法,其特征在于,该方法包括:
分析软件代码初步合并版本中的冲突块在第一软件代码变更版本中的第一代码区域和在第二软件代码变更版本中的第二代码区域,确定所述第一代码区域的变更意图和所述第二代码区域的变更意图,其中,所述第一软件代码变更版本和所述第二软件代码变更版本由原始软件代码变更后获取;
基于冲突消除规则集合,根据所述第一代码区域的变更意图和所述第二代码区域的变更意图消除所述冲突块,所述冲突消除规则集合中包括至少一个冲突消除规则,每个冲突消除规则记录了对冲突块,合并不同软件代码变更版本中的代码变更区域所采用的冲突消除方案。
2.如权利要求1所述的方法,其特征在于,所述方法,还包括:
调用预测模型消除所述软件代码初步合并版本中的冲突块,所述预测模块用于根据输入的冲突块输出所述冲突块的冲突消除方案。
3.如权利要求1或2所述的方法,其特征在于,所述方法,还包括:
分析所述软件代码初步合并版本中的冲突块和单方变更块,确定所述单方变更块之间的关联关系、以及所述单方变更块与所述冲突块之间的关联关系;
基于所述单方变更块之间的关联关系、以及所述单方变更块与所述冲突块之间的关联关系,提示存在隐式冲突。
4.如权利要求1~3任一所述的方法,其特征在于,所述确定第一代码区域的变更意图和所述第二代码区域的变更意图,包括:
调用多个变更分析器对第一变更动作集进行分析,确定所述第一代码区域的变更意图,所述第一变更动作集记录了针对所述原始软件代码,所述第一代码区域的变更动作;
调用所述多个变更分析器对第二变更动作集进行分析,确定所述第二代码区域的变更意图,所述第二变更动作集记录了针对所述原始软件代码,所述第二代码区域的变更动作,其中,一个所述变更分析器用于分析所述第一变更动作集和第二变更动作集中一种类型的语句、变量、函数或类,确定变更意图。
5.如权利要求3所述的方法,其特征在于,所述单方变更块之间的关联关系包括下列至少一项:
所述单方变更块之间函数的修改或引用关系、所述单方变更块之间变量的修改或引用关系;
所述单方变更块与所述冲突块之间的关联关系包括下列至少一项:
所述单方变更块与所述冲突块之间函数的修改或引用关系、所述单方变更块与所述冲突块之间变量的修改或引用关系。
6.如权利要求4任一所述的方法,其特征在于,所述方法,还包括:
构建所述原始软件代码的语法树、所述第一软件代码变更版本的语法树以及所述第二软件代码变更版本的语法树;
根据所述原始软件代码的语法树、第一软件代码变更版本的语法树确定所述第一变更动作集;
根据所述原始软件代码的语法树、所述第二软件代码变更版本的语法树确定所述第二变更动作集。
7.一种合并装置,其特征在于,该装置包括:
意图理解模块,用于分析软件代码初步合并版本中的冲突块在第一软件代码变更版本中的第一代码区域和在第二软件代码变更版本中的第二代码区域,确定所述第一代码区域的变更意图和所述第二代码区域的变更意图,其中,所述第一软件代码变更版本和所述第二软件代码变更版本由原始...
【专利技术属性】
技术研发人员:魏昭,梁广泰,李琳,王千祥,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。