CN106919431B - 持续集成中的代码比对方法、设备以及系统 - Google Patents

持续集成中的代码比对方法、设备以及系统 Download PDF

Info

Publication number
CN106919431B
CN106919431B CN201510994159.4A CN201510994159A CN106919431B CN 106919431 B CN106919431 B CN 106919431B CN 201510994159 A CN201510994159 A CN 201510994159A CN 106919431 B CN106919431 B CN 106919431B
Authority
CN
China
Prior art keywords
code
new version
old version
compiled
old
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
CN201510994159.4A
Other languages
English (en)
Other versions
CN106919431A (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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN201510994159.4A priority Critical patent/CN106919431B/zh
Publication of CN106919431A publication Critical patent/CN106919431A/zh
Application granted granted Critical
Publication of CN106919431B publication Critical patent/CN106919431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Abstract

本发明涉及信息技术领域,公开了一种持续集成中的代码比对方法、设备以及系统,该方法包括:获取新版本代码和旧版本代码;编译所述新版本代码和旧版本代码;将编译后的新版本代码和旧版本代码进行比对;以及根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示。本发明能够实现真正意义上的新旧版本之间的代码比对,实现对代码本身发生的变化进行精确的判定,使得开发团队可以方便地、快速地、有效地找到新旧版本代码的不同之处,实现更有效率地开发。

Description

持续集成中的代码比对方法、设备以及系统
技术领域
本发明涉及信息技术领域,具体地,涉及一种持续集成中的代码比对方法、一种持续集成中的代码比对设备、以及一种持续集成中的代码比对系统。
背景技术
随着敏捷开发模式被越来越多的团队所接受,持续集成(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,根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示。
优选地,所述将编译后的新版本代码和旧版本代码进行比对包括:解析编译后的新版本代码和旧版本代码,并获得新版本代码结构的树状图和行号表格以及旧版本代码结构的树状图和行号表格;以及将新版本代码结构的树状图与旧版本代码结构的树状图进行比对,并将所述新版本代码结构的树状图与旧版本代码结构的树状图之间的不同确定为代码变化的部分;或者在所述新版本代码结构的树状图与旧版本代码结构的树状图相同的情况下,将新版本的行号表格与旧版本的行号表格进行比对,并将所述新版本的行号表格与旧版本的行号表格之间的不同确定为代码变化的部分。
优选地,所述根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示包括:根据所述代码变化的部分,获取与所述代码变化的部分对应的源代码,并将所述源代码作为变化的源代码进行展示。
优选地,该方法还包括:根据所述变化的源代码,获得与所述变化的源代码关联的代码调用关系;以及展示所述代码调用关系。
此外,本发明还提供了一种包括上述持续集成中的代码比对设备的系统。
应当理解的是,上述持续集成中的代码比对方法和系统的各个具体实施方式,均已在示例持续集成中的代码比对设备的实施方式中做了详细地说明(如上所述),在此不再赘述。并且,本领域技术人员可以根据本发明的公开选择上述各种实施方式中的任一者,或者选择上述各种实施方式的组合来配置持续集成中的代码比对设备以及系统,并且其他的替换实施方式也落入本发明的保护范围。
采用本发明提供的持续集成中的代码比对方法、设备以及系统,能够实现真正意义上的新旧版本之间的代码比对,实现对代码本身发生的变化进行精确的判定,使得开发团队可以方便地、快速地、有效地找到新旧版本代码的不同之处,实现更有效率地开发。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

Claims (5)

1.一种持续集成中的代码比对方法,其特征在于,该方法包括:
获取新版本代码和旧版本代码;
编译所述新版本代码和旧版本代码;
将编译后的新版本代码和旧版本代码进行比对;以及
根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示;
根据所述变化的源代码,获得与所述变化的源代码关联的代码调用关系并进行展示;
所述将编译后的新版本代码和旧版本代码进行比对包括:
解析编译后的新版本代码和旧版本代码,并获得新版本代码结构的树状图和行号表格以及旧版本代码结构的树状图和行号表格;
将新版本代码结构的树状图与旧版本代码结构的树状图进行比对,并将所述新版本代码结构的树状图与旧版本代码结构的树状图之间的不同确定为代码变化的部分;或者在所述新版本代码结构的树状图与旧版本代码结构的树状图相同的情况下,将新版本的行号表格与旧版本的行号表格进行比对,并将所述新版本的行号表格与旧版本的行号表格之间的不同确定为代码变化的部分。
2.根据权利要求1所述的方法,其特征在于,所述根据编译后的新版本代码和旧版本代码之间的比对结果,获取变化的源代码并进行展示包括:
根据所述代码变化的部分,获取与所述代码变化的部分对应的源代码,并将所述源代码作为变化的源代码进行展示。
3.一种持续集成中的代码比对设备,其特征在于,该设备包括:
获取模块,用于获取新版本代码和旧版本代码;
编译模块,用于编译所述新版本代码和旧版本代码;
比对模块,用于解析编译后的新版本代码和旧版本代码,并获得新版本代码结构的树状图和行号表格以及旧版本代码结构的树状图和行号表格;以及将新版本代码结构的树状图与旧版本代码结构的树状图进行比对,并将所述新版本代码结构的树状图与旧版本代码结构的树状图之间的不同确定为代码变化的部分;或者在所述新版本代码结构的树状图与旧版本代码结构的树状图相同的情况下,将新版本的行号表格与旧版本的行号表格进行比对,并将所述新版本的行号表格与旧版本的行号表格之间的不同确定为代码变化的部分;以及
展示模块,用于根据编译后的新版本代码和旧版本代码之间的比对结果获取变化的源代码并进行展示;
关联代码展示模块,用于根据所述变化的源代码,获得与所述变化的源代码关联的代码调用关系并进行展示。
4.根据权利要求3所述的设备,其特征在于,所述展示模块用于:
根据所述代码变化的部分获取与所述代码变化的部分对应的源代码,并将所述源代码作为变化的源代码进行展示。
5.一种持续集成中的代码比对系统,其特征在于,该系统包括:根据权利要求3-4中任一项所述的持续集成中的代码比对设备。
CN201510994159.4A 2015-12-25 2015-12-25 持续集成中的代码比对方法、设备以及系统 Active CN106919431B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510994159.4A CN106919431B (zh) 2015-12-25 2015-12-25 持续集成中的代码比对方法、设备以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510994159.4A CN106919431B (zh) 2015-12-25 2015-12-25 持续集成中的代码比对方法、设备以及系统

Publications (2)

Publication Number Publication Date
CN106919431A CN106919431A (zh) 2017-07-04
CN106919431B true CN106919431B (zh) 2021-03-26

Family

ID=59455571

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510994159.4A Active CN106919431B (zh) 2015-12-25 2015-12-25 持续集成中的代码比对方法、设备以及系统

Country Status (1)

Country Link
CN (1) CN106919431B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536467B (zh) * 2018-04-08 2021-11-02 中国联合网络通信集团有限公司 代码的定位处理方法、装置、终端设备及存储介质
CN109408102B (zh) * 2018-09-04 2021-03-23 珠海格力电器股份有限公司 一种版本比对方法和装置、家电设备、网络设备
CN109446083B (zh) * 2018-10-23 2023-08-22 航天信息股份有限公司 一种持续集成方法和系统
CN109766125B (zh) * 2019-01-04 2022-06-10 中国银行股份有限公司 批次间追平冲突的识别方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729580A (zh) * 2014-01-27 2014-04-16 国家电网公司 一种检测软件抄袭的方法和装置
CN103955363A (zh) * 2014-04-08 2014-07-30 国云科技股份有限公司 一种程序升级安装包的制作方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725881B2 (en) * 2006-06-09 2010-05-25 Microsoft Corporation Automatically extracting coupling metrics from compiled code
CN103838572A (zh) * 2013-12-20 2014-06-04 北京掌阔技术有限公司 一种安卓开发包的打包系统和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729580A (zh) * 2014-01-27 2014-04-16 国家电网公司 一种检测软件抄袭的方法和装置
CN103955363A (zh) * 2014-04-08 2014-07-30 国云科技股份有限公司 一种程序升级安装包的制作方法

Also Published As

Publication number Publication date
CN106919431A (zh) 2017-07-04

Similar Documents

Publication Publication Date Title
US8627290B2 (en) Test case pattern matching
US9235493B2 (en) System and method for peer-based code quality analysis reporting
CN106919431B (zh) 持续集成中的代码比对方法、设备以及系统
EP2960799A1 (en) Defect localization in software integration tests
CN108073400A (zh) 软件自动化构建方法、服务器及存储介质
US9632754B2 (en) Auto generation and linkage of source code to test cases
US7895575B2 (en) Apparatus and method for generating test driver
US8904352B2 (en) Systems and methods for processing source code during debugging operations
US9384117B2 (en) Machine and methods for evaluating failing software programs
US10445225B2 (en) Command coverage analyzer
US9952965B2 (en) Test self-verification with integrated transparent self-diagnose
CN105138461A (zh) 一种应用程序的接口测试方法及装置
US9703683B2 (en) Software testing coverage
CN107329889B (zh) 一种c编译器自动化测试的方法
CN105630674A (zh) 一种针对界面的测试方法和装置
CN111198811A (zh) 一种页面自动化测试的方法、装置、电子设备及存储介质
CN104750601A (zh) 一种测试方法及装置
CN112463588A (zh) 一种自动化测试系统及方法、存储介质、计算设备
JP6310527B1 (ja) オブジェクト分析装置、オブジェクト分析方法、及びプログラム
CN112650670A (zh) 应用测试方法、装置、系统、电子设备和存储介质
US20160314061A1 (en) Software Defect Detection Identifying Location of Diverging Paths
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
CN106598836A (zh) 一种客户端软件的测试方法及系统
KR102603330B1 (ko) 테스트 커버리지 표시 장치 및 표시 방법
CN111625835B (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
GR01 Patent grant