持续集成中的代码比对方法、设备以及系统与流程

文档序号:12801706阅读:825来源:国知局
持续集成中的代码比对方法、设备以及系统与流程

本发明涉及信息技术领域,具体地,涉及一种持续集成中的代码比对方法、一种持续集成中的代码比对设备、以及一种持续集成中的代码比对系统。



背景技术:

随着敏捷开发模式被越来越多的团队所接受,持续集成(ci,continuousintegration)被越来越多的应用到开发过程中。作为一种软件实践,持续集成让开发团队在软件构建时持续收到反馈并进行改进,而不必等到开发周期后期才寻找和修复缺陷。典型的集成过程包括获取代码、编译代码、测试代码以及记录测试结果等几个步骤。持续集成是反复地进行软件集成的过程,通常使用自动化的集成工具来实现上述步骤。

但是,现有的代码比较是基于字符的比较,当新旧版本文件内容不同即认为文件不同,若文件中修改了空格或换行等符号,这些修改本身对代码没有影响,但是比较结果显示代码发生了改变。如果能实现对代码本身发生的变化进行精确的判定,那么比较的结果将会更具实际意义。即现有技术中缺少一种能够对代码本身发生的变化进行精确判定的方法、设备以及系统。



技术实现要素:

针对现有技术中的基于字符比较代码存在的上述缺陷,本发明提供一种持续集成中的代码比对方法,该方法包括:获取新版本代码和旧版本代码;编译所述新版本代码和旧版本代码;将编译后的新版本代码和旧版本 代码进行比对;以及根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示。

相应地,本发明还提供了一种持续集成中的代码比对设备,该设备包括:获取模块,用于获取新版本代码和旧版本代码;编译模块,用于编译所述新版本代码和旧版本代码;比对模块,用于将编译后的新版本代码和旧版本代码进行比对;以及展示模块,用于根据编译后的新版本代码和旧版本代码之间的比对结果获取变化的源代码并进行展示。

此外,本发明还提供了一种持续集成中的代码比对系统,该系统包括本发明提供的持续集成中的代码比对设备。

采用本发明提供的持续集成中的代码比对方法、设备以及系统,通过首先获取新版本代码和旧版本代码,之后编译所述新版本代码和旧版本代码,将编译后的新版本代码和旧版本代码进行比对,以及最后根据编译后的新版本代码和旧版本代码之间的比对结果获取变化的源代码并进行展示,从而实现真正意义上的新旧版本之间的代码比对,实现对代码本身发生的变化进行精确的判定,使得开发团队可以方便地、快速地、有效地找到新旧版本代码的不同之处,实现更有效率地开发。

本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:

图1是根据本发明的一种实施方式的示例持续集成中的代码比对设备的结构示意图;

图2是根据本发明的一种实施方式的示例持续集成中的代码比对方法的示例流程图。

附图标记说明

10获取模块11编译模块

12比对模块13展示模块

100持续集成中的代码比对设备

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

下面将举例说明本发明的思想,但应当理解的这些示例为非局限性示例,本发明的保护范围不限于此:

为了解决上述技术问题,本发明的思想在于采用自解码的机制基于代码本身比对,而不是简单的对文本进行比较,当代码本身确实发生了变化才会认定为不同。为了更加清楚地说明本发明的思想,以持续集成中的代码比对设备为例进行详细地说明。

图1是根据本发明的一种实施方式的示例持续集成中的代码比对设备100的结构示意图,如图1所示,该设备可以包括:获取模块10,用于获取新版本代码和旧版本代码;编译模块11,用于编译所述新版本代码和旧版本代码;比对模块12,用于将编译后的新版本代码和旧版本代码进行比对;以及展示模块13,用于根据编译后的新版本代码和旧版本代码之间的比对结果获取变化的源代码并进行展示。其中,持续集成中的代码比对设备100可以根据实际情况以软件或硬件形式被配置。例如,该持续集成中的代码比对设 备100可以以软件形式配置在持续集中环境中,或者也可以以硬件形式存在与该环境下,本领域技术人员可以根据实际情况进行配置或选择。

具体的,持续集成中的代码比对设备100可以执行以下流程来实现新旧版代码的比对:

首先,在持续集成环境下,获取模块10可以获取新版本代码和旧版本代码。之后,编译模块11可以编译所述新版本代码和旧版本代码,例如生成新旧版本的java数据包。

接着,比对模块12可以将编译后的新版本代码和旧版本代码进行比对。例如,所述比对模块12可以解析编译后的新版本代码和旧版本代码,即解码新旧版本的java数据包,并获得新版本代码结构的树状图和行号表格以及旧版本代码结构的树状图和行号表格。之后,所述比对模块12可以将新版本代码结构的树状图与旧版本代码结构的树状图进行比对,例如依次比对新旧版本的树状图中的项目(project)—包(package)—类(class)—方法(method),并将所述新版本代码结构的树状图与旧版本代码结构的树状图之间的不同确定为代码变化的部分,例如如果新旧版本的树状图中的项目不同则可以其确定为代码变化的部分,或者如果新旧版本的树状图中的包不同则可以其确定为代码变化的部分,或者如果新旧版本的树状图中的类不同则可以其确定为代码变化的部分,再或者如果新旧版本的树状图中的方法不同则可以其确定为代码变化的部分。

反之,如果新版本代码结构的树状图与旧版本代码结构的树状图均相同,则比对模块12可以将新版本的行号表格与旧版本的行号表格进行比对,并将所述新版本的行号表格与旧版本的行号表格之间的不同确定为代码变化的部分。例如,比对模块12的可以:(1)获取修改点的修改类型,修改类型包括创建、修改、删除,根据不同的类型做不同的操作;(2)若为创建,则不存在旧版本文件,那么就是空文件与新版本文件进行比对,得到比对结 果;(3)若为修改,则对该文件的旧版本和新版本进行比对,在比对结果中,删除没有变化的部分,并作为最终比对结果;(4)若为删除,则新版本文件为空,那么就是将该文件的旧版本和空文件比较,得到比对结果。总之,采用上述方式,比对模块12可以确定比对结果,即代码变化的部分,例如生成一个修改清单。

之后,展示模块13可以根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示。例如根据所述代码变化的部分获取与所述代码变化的部分对应的源代码,并将所述源代码作为变化的源代码进行展示。

更为优选地,所述展示模块13还可以根据所述变化的源代码,获得与所述变化的源代码关联的代码调用关系,并且展示所述代码调用关系。例如,可以通过得到程序调用栈内容,将栈中的各元素逐个出栈,得到调用关系。

采用这样的实施方式,在持续集成过程中,不仅可以实现对编译后的新旧版本代码进行分析,筛选出变化类和方法,标记出变化的代码行,同时还可以记录方法间的调用关系,使得用户在每一次构建完成后,就可以查看到本次构建中修改代码的新旧版本内容对比,修改点一目了然,同时也可以查看到被修改方法的层级调用关系,能够快速了解修改点的改动影响,实现更有效率地开发。

图2是根据本发明的一种实施方式的示例持续集成中的代码比对方法的示例流程图,如图2所示,该方法包括以下步骤:

步骤1001,获取新版本代码和旧版本代码;

步骤1002,编译所述新版本代码和旧版本代码;

步骤1003,将编译后的新版本代码和旧版本代码进行比对;以及

步骤1004,根据编译后的新版本代码和旧版本代码之间的比对结果, 获取变化的源代码并进行展示。

优选地,所述将编译后的新版本代码和旧版本代码进行比对包括:解析编译后的新版本代码和旧版本代码,并获得新版本代码结构的树状图和行号表格以及旧版本代码结构的树状图和行号表格;以及将新版本代码结构的树状图与旧版本代码结构的树状图进行比对,并将所述新版本代码结构的树状图与旧版本代码结构的树状图之间的不同确定为代码变化的部分;或者在所述新版本代码结构的树状图与旧版本代码结构的树状图相同的情况下,将新版本的行号表格与旧版本的行号表格进行比对,并将所述新版本的行号表格与旧版本的行号表格之间的不同确定为代码变化的部分。

优选地,所述根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示包括:根据所述代码变化的部分,获取与所述代码变化的部分对应的源代码,并将所述源代码作为变化的源代码进行展示。

优选地,该方法还包括:根据所述变化的源代码,获得与所述变化的源代码关联的代码调用关系;以及展示所述代码调用关系。

此外,本发明还提供了一种包括上述持续集成中的代码比对设备的系统。

应当理解的是,上述持续集成中的代码比对方法和系统的各个具体实施方式,均已在示例持续集成中的代码比对设备的实施方式中做了详细地说明(如上所述),在此不再赘述。并且,本领域技术人员可以根据本发明的公开选择上述各种实施方式中的任一者,或者选择上述各种实施方式的组合来配置持续集成中的代码比对设备以及系统,并且其他的替换实施方式也落入本发明的保护范围。

采用本发明提供的持续集成中的代码比对方法、设备以及系统,能够实 现真正意义上的新旧版本之间的代码比对,实现对代码本身发生的变化进行精确的判定,使得开发团队可以方便地、快速地、有效地找到新旧版本代码的不同之处,实现更有效率地开发。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1