两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

持續(xù)集成中的代碼比對(duì)方法、設(shè)備以及系統(tǒng)與流程

文檔序號(hào):12801706閱讀:921來源:國(guó)知局
持續(xù)集成中的代碼比對(duì)方法、設(shè)備以及系統(tǒng)與流程

本發(fā)明涉及信息技術(shù)領(lǐng)域,具體地,涉及一種持續(xù)集成中的代碼比對(duì)方法、一種持續(xù)集成中的代碼比對(duì)設(shè)備、以及一種持續(xù)集成中的代碼比對(duì)系統(tǒng)。



背景技術(shù):

隨著敏捷開發(fā)模式被越來越多的團(tuán)隊(duì)所接受,持續(xù)集成(ci,continuousintegration)被越來越多的應(yīng)用到開發(fā)過程中。作為一種軟件實(shí)踐,持續(xù)集成讓開發(fā)團(tuán)隊(duì)在軟件構(gòu)建時(shí)持續(xù)收到反饋并進(jìn)行改進(jìn),而不必等到開發(fā)周期后期才尋找和修復(fù)缺陷。典型的集成過程包括獲取代碼、編譯代碼、測(cè)試代碼以及記錄測(cè)試結(jié)果等幾個(gè)步驟。持續(xù)集成是反復(fù)地進(jìn)行軟件集成的過程,通常使用自動(dòng)化的集成工具來實(shí)現(xiàn)上述步驟。

但是,現(xiàn)有的代碼比較是基于字符的比較,當(dāng)新舊版本文件內(nèi)容不同即認(rèn)為文件不同,若文件中修改了空格或換行等符號(hào),這些修改本身對(duì)代碼沒有影響,但是比較結(jié)果顯示代碼發(fā)生了改變。如果能實(shí)現(xiàn)對(duì)代碼本身發(fā)生的變化進(jìn)行精確的判定,那么比較的結(jié)果將會(huì)更具實(shí)際意義。即現(xiàn)有技術(shù)中缺少一種能夠?qū)Υa本身發(fā)生的變化進(jìn)行精確判定的方法、設(shè)備以及系統(tǒng)。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)中的基于字符比較代碼存在的上述缺陷,本發(fā)明提供一種持續(xù)集成中的代碼比對(duì)方法,該方法包括:獲取新版本代碼和舊版本代碼;編譯所述新版本代碼和舊版本代碼;將編譯后的新版本代碼和舊版本 代碼進(jìn)行比對(duì);以及根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果,獲取變化的源代碼并進(jìn)行展示。

相應(yīng)地,本發(fā)明還提供了一種持續(xù)集成中的代碼比對(duì)設(shè)備,該設(shè)備包括:獲取模塊,用于獲取新版本代碼和舊版本代碼;編譯模塊,用于編譯所述新版本代碼和舊版本代碼;比對(duì)模塊,用于將編譯后的新版本代碼和舊版本代碼進(jìn)行比對(duì);以及展示模塊,用于根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果獲取變化的源代碼并進(jìn)行展示。

此外,本發(fā)明還提供了一種持續(xù)集成中的代碼比對(duì)系統(tǒng),該系統(tǒng)包括本發(fā)明提供的持續(xù)集成中的代碼比對(duì)設(shè)備。

采用本發(fā)明提供的持續(xù)集成中的代碼比對(duì)方法、設(shè)備以及系統(tǒng),通過首先獲取新版本代碼和舊版本代碼,之后編譯所述新版本代碼和舊版本代碼,將編譯后的新版本代碼和舊版本代碼進(jìn)行比對(duì),以及最后根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果獲取變化的源代碼并進(jìn)行展示,從而實(shí)現(xiàn)真正意義上的新舊版本之間的代碼比對(duì),實(shí)現(xiàn)對(duì)代碼本身發(fā)生的變化進(jìn)行精確的判定,使得開發(fā)團(tuán)隊(duì)可以方便地、快速地、有效地找到新舊版本代碼的不同之處,實(shí)現(xiàn)更有效率地開發(fā)。

本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說明。

附圖說明

附圖是用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:

圖1是根據(jù)本發(fā)明的一種實(shí)施方式的示例持續(xù)集成中的代碼比對(duì)設(shè)備的結(jié)構(gòu)示意圖;

圖2是根據(jù)本發(fā)明的一種實(shí)施方式的示例持續(xù)集成中的代碼比對(duì)方法的示例流程圖。

附圖標(biāo)記說明

10獲取模塊11編譯模塊

12比對(duì)模塊13展示模塊

100持續(xù)集成中的代碼比對(duì)設(shè)備

具體實(shí)施方式

以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。

下面將舉例說明本發(fā)明的思想,但應(yīng)當(dāng)理解的這些示例為非局限性示例,本發(fā)明的保護(hù)范圍不限于此:

為了解決上述技術(shù)問題,本發(fā)明的思想在于采用自解碼的機(jī)制基于代碼本身比對(duì),而不是簡(jiǎn)單的對(duì)文本進(jìn)行比較,當(dāng)代碼本身確實(shí)發(fā)生了變化才會(huì)認(rèn)定為不同。為了更加清楚地說明本發(fā)明的思想,以持續(xù)集成中的代碼比對(duì)設(shè)備為例進(jìn)行詳細(xì)地說明。

圖1是根據(jù)本發(fā)明的一種實(shí)施方式的示例持續(xù)集成中的代碼比對(duì)設(shè)備100的結(jié)構(gòu)示意圖,如圖1所示,該設(shè)備可以包括:獲取模塊10,用于獲取新版本代碼和舊版本代碼;編譯模塊11,用于編譯所述新版本代碼和舊版本代碼;比對(duì)模塊12,用于將編譯后的新版本代碼和舊版本代碼進(jìn)行比對(duì);以及展示模塊13,用于根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果獲取變化的源代碼并進(jìn)行展示。其中,持續(xù)集成中的代碼比對(duì)設(shè)備100可以根據(jù)實(shí)際情況以軟件或硬件形式被配置。例如,該持續(xù)集成中的代碼比對(duì)設(shè) 備100可以以軟件形式配置在持續(xù)集中環(huán)境中,或者也可以以硬件形式存在與該環(huán)境下,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況進(jìn)行配置或選擇。

具體的,持續(xù)集成中的代碼比對(duì)設(shè)備100可以執(zhí)行以下流程來實(shí)現(xiàn)新舊版代碼的比對(duì):

首先,在持續(xù)集成環(huán)境下,獲取模塊10可以獲取新版本代碼和舊版本代碼。之后,編譯模塊11可以編譯所述新版本代碼和舊版本代碼,例如生成新舊版本的java數(shù)據(jù)包。

接著,比對(duì)模塊12可以將編譯后的新版本代碼和舊版本代碼進(jìn)行比對(duì)。例如,所述比對(duì)模塊12可以解析編譯后的新版本代碼和舊版本代碼,即解碼新舊版本的java數(shù)據(jù)包,并獲得新版本代碼結(jié)構(gòu)的樹狀圖和行號(hào)表格以及舊版本代碼結(jié)構(gòu)的樹狀圖和行號(hào)表格。之后,所述比對(duì)模塊12可以將新版本代碼結(jié)構(gòu)的樹狀圖與舊版本代碼結(jié)構(gòu)的樹狀圖進(jìn)行比對(duì),例如依次比對(duì)新舊版本的樹狀圖中的項(xiàng)目(project)—包(package)—類(class)—方法(method),并將所述新版本代碼結(jié)構(gòu)的樹狀圖與舊版本代碼結(jié)構(gòu)的樹狀圖之間的不同確定為代碼變化的部分,例如如果新舊版本的樹狀圖中的項(xiàng)目不同則可以其確定為代碼變化的部分,或者如果新舊版本的樹狀圖中的包不同則可以其確定為代碼變化的部分,或者如果新舊版本的樹狀圖中的類不同則可以其確定為代碼變化的部分,再或者如果新舊版本的樹狀圖中的方法不同則可以其確定為代碼變化的部分。

反之,如果新版本代碼結(jié)構(gòu)的樹狀圖與舊版本代碼結(jié)構(gòu)的樹狀圖均相同,則比對(duì)模塊12可以將新版本的行號(hào)表格與舊版本的行號(hào)表格進(jìn)行比對(duì),并將所述新版本的行號(hào)表格與舊版本的行號(hào)表格之間的不同確定為代碼變化的部分。例如,比對(duì)模塊12的可以:(1)獲取修改點(diǎn)的修改類型,修改類型包括創(chuàng)建、修改、刪除,根據(jù)不同的類型做不同的操作;(2)若為創(chuàng)建,則不存在舊版本文件,那么就是空文件與新版本文件進(jìn)行比對(duì),得到比對(duì)結(jié) 果;(3)若為修改,則對(duì)該文件的舊版本和新版本進(jìn)行比對(duì),在比對(duì)結(jié)果中,刪除沒有變化的部分,并作為最終比對(duì)結(jié)果;(4)若為刪除,則新版本文件為空,那么就是將該文件的舊版本和空文件比較,得到比對(duì)結(jié)果??傊捎蒙鲜龇绞?,比對(duì)模塊12可以確定比對(duì)結(jié)果,即代碼變化的部分,例如生成一個(gè)修改清單。

之后,展示模塊13可以根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果,獲取變化的源代碼并進(jìn)行展示。例如根據(jù)所述代碼變化的部分獲取與所述代碼變化的部分對(duì)應(yīng)的源代碼,并將所述源代碼作為變化的源代碼進(jìn)行展示。

更為優(yōu)選地,所述展示模塊13還可以根據(jù)所述變化的源代碼,獲得與所述變化的源代碼關(guān)聯(lián)的代碼調(diào)用關(guān)系,并且展示所述代碼調(diào)用關(guān)系。例如,可以通過得到程序調(diào)用棧內(nèi)容,將棧中的各元素逐個(gè)出棧,得到調(diào)用關(guān)系。

采用這樣的實(shí)施方式,在持續(xù)集成過程中,不僅可以實(shí)現(xiàn)對(duì)編譯后的新舊版本代碼進(jìn)行分析,篩選出變化類和方法,標(biāo)記出變化的代碼行,同時(shí)還可以記錄方法間的調(diào)用關(guān)系,使得用戶在每一次構(gòu)建完成后,就可以查看到本次構(gòu)建中修改代碼的新舊版本內(nèi)容對(duì)比,修改點(diǎn)一目了然,同時(shí)也可以查看到被修改方法的層級(jí)調(diào)用關(guān)系,能夠快速了解修改點(diǎn)的改動(dòng)影響,實(shí)現(xiàn)更有效率地開發(fā)。

圖2是根據(jù)本發(fā)明的一種實(shí)施方式的示例持續(xù)集成中的代碼比對(duì)方法的示例流程圖,如圖2所示,該方法包括以下步驟:

步驟1001,獲取新版本代碼和舊版本代碼;

步驟1002,編譯所述新版本代碼和舊版本代碼;

步驟1003,將編譯后的新版本代碼和舊版本代碼進(jìn)行比對(duì);以及

步驟1004,根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果, 獲取變化的源代碼并進(jìn)行展示。

優(yōu)選地,所述將編譯后的新版本代碼和舊版本代碼進(jìn)行比對(duì)包括:解析編譯后的新版本代碼和舊版本代碼,并獲得新版本代碼結(jié)構(gòu)的樹狀圖和行號(hào)表格以及舊版本代碼結(jié)構(gòu)的樹狀圖和行號(hào)表格;以及將新版本代碼結(jié)構(gòu)的樹狀圖與舊版本代碼結(jié)構(gòu)的樹狀圖進(jìn)行比對(duì),并將所述新版本代碼結(jié)構(gòu)的樹狀圖與舊版本代碼結(jié)構(gòu)的樹狀圖之間的不同確定為代碼變化的部分;或者在所述新版本代碼結(jié)構(gòu)的樹狀圖與舊版本代碼結(jié)構(gòu)的樹狀圖相同的情況下,將新版本的行號(hào)表格與舊版本的行號(hào)表格進(jìn)行比對(duì),并將所述新版本的行號(hào)表格與舊版本的行號(hào)表格之間的不同確定為代碼變化的部分。

優(yōu)選地,所述根據(jù)編譯后的新版本代碼和舊版本代碼之間的比對(duì)結(jié)果,獲取變化的源代碼并進(jìn)行展示包括:根據(jù)所述代碼變化的部分,獲取與所述代碼變化的部分對(duì)應(yīng)的源代碼,并將所述源代碼作為變化的源代碼進(jìn)行展示。

優(yōu)選地,該方法還包括:根據(jù)所述變化的源代碼,獲得與所述變化的源代碼關(guān)聯(lián)的代碼調(diào)用關(guān)系;以及展示所述代碼調(diào)用關(guān)系。

此外,本發(fā)明還提供了一種包括上述持續(xù)集成中的代碼比對(duì)設(shè)備的系統(tǒng)。

應(yīng)當(dāng)理解的是,上述持續(xù)集成中的代碼比對(duì)方法和系統(tǒng)的各個(gè)具體實(shí)施方式,均已在示例持續(xù)集成中的代碼比對(duì)設(shè)備的實(shí)施方式中做了詳細(xì)地說明(如上所述),在此不再贅述。并且,本領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明的公開選擇上述各種實(shí)施方式中的任一者,或者選擇上述各種實(shí)施方式的組合來配置持續(xù)集成中的代碼比對(duì)設(shè)備以及系統(tǒng),并且其他的替換實(shí)施方式也落入本發(fā)明的保護(hù)范圍。

采用本發(fā)明提供的持續(xù)集成中的代碼比對(duì)方法、設(shè)備以及系統(tǒng),能夠?qū)? 現(xiàn)真正意義上的新舊版本之間的代碼比對(duì),實(shí)現(xiàn)對(duì)代碼本身發(fā)生的變化進(jìn)行精確的判定,使得開發(fā)團(tuán)隊(duì)可以方便地、快速地、有效地找到新舊版本代碼的不同之處,實(shí)現(xiàn)更有效率地開發(fā)。

以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行多種簡(jiǎn)單變型,這些簡(jiǎn)單變型均屬于本發(fā)明的保護(hù)范圍。

另外需要說明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進(jìn)行組合,為了避免不必要的重復(fù),本發(fā)明對(duì)各種可能的組合方式不再另行說明。

此外,本發(fā)明的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開的內(nèi)容。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
万全县| 福建省| 清徐县| 疏附县| 大新县| 阿鲁科尔沁旗| 茶陵县| 牟定县| 介休市| 龙胜| 平顶山市| 砀山县| 奎屯市| 文化| 哈尔滨市| 喜德县| 铁力市| 揭东县| 图木舒克市| 高密市| 新丰县| 雅安市| 东安县| 河间市| 荥阳市| 长子县| 安顺市| 澳门| 防城港市| 郯城县| 彭阳县| 双桥区| 武功县| 东阿县| 虹口区| 阳西县| 清涧县| 庄河市| 乾安县| 兖州市| 全椒县|