專利名稱:一種基于面向?qū)ο蟮奈募町惐容^方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件版本管理相關(guān)技術(shù)領(lǐng)域,特別是一種基于面向?qū)ο蟮奈募町惐容^方法及其系統(tǒng)。
背景技術(shù):
現(xiàn)有流行的版本管理工具,如SVWsubversion),其具有版本控制和備份服務(wù)器兩大功能,用戶可以將其當(dāng)成自己的文件備份服務(wù)器,更好的是,它可以幫助用戶記住每次上傳到服務(wù)器上的檔案內(nèi)容,并自動(dòng)的賦予每次的變更一個(gè)版本。為此,設(shè)計(jì)人員在進(jìn)行軟件的設(shè)計(jì)開(kāi)發(fā)時(shí),可以選用SVN作為代碼管理工具提供的文件差異比較功能,來(lái)實(shí)現(xiàn)對(duì)不同軟件版本的代碼進(jìn)行差異化比較。SVN自身提供的文件差異比較功能,其原理是將兩個(gè)文件作為文本文件進(jìn)行逐行比較,進(jìn)而找出所要比較的兩個(gè)文件的差異。在需要比較兩個(gè)不同版本的代碼文件差別時(shí), SVN將會(huì)首先把所要比較的代碼文件的兩個(gè)版本下載到本地主機(jī)上,然后進(jìn)行逐行比較。SVN自身提供的文件差異比較功能雖然使用起來(lái)方便,而且能非常準(zhǔn)確的比較出目標(biāo)文件不同版本的差異,但是該功能有如下兩個(gè)缺點(diǎn)第一,該功能只能對(duì)文件進(jìn)行比較,而無(wú)法整個(gè)工程進(jìn)行比較;第二,由于該功能采用的是逐行比較的方式,自然會(huì)將文件中的空行語(yǔ)句和注釋語(yǔ)句也進(jìn)行比較。因此,SVN自身所提供的文件差異比較功能在實(shí)際使用中其效率較為低下。
發(fā)明內(nèi)容
本發(fā)明的第一個(gè)發(fā)明目的在于提供一種基于面向?qū)ο蟮奈募町惐容^方法,以解決現(xiàn)有版本管理工具對(duì)基于面向?qū)ο蟮挠?jì)算機(jī)編程項(xiàng)目工程進(jìn)行差異比較時(shí)效率低下的技術(shù)問(wèn)題。本發(fā)明的第一發(fā)明目的采用如下技術(shù)方案實(shí)現(xiàn)
一種基于面向?qū)ο蟮奈募町惐容^方法,對(duì)基于面向?qū)ο蟮挠?jì)算機(jī)編程項(xiàng)目工程進(jìn)行差異比較,所述方法包括
通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的新舊兩個(gè)版本的工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象;
對(duì)相同的計(jì)算機(jī)語(yǔ)言描述對(duì)象進(jìn)行分析找出在兩個(gè)版本中的變化信息并保存為變化信息記錄文件。作為一種優(yōu)選方案,所述方法采用XML節(jié)點(diǎn)格式用于描述工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象。作為進(jìn)一步的優(yōu)選方案,所述計(jì)算機(jī)語(yǔ)言描述對(duì)象包括全局變量、全局函數(shù)和/ 或類聲明及其成員變量與成員函數(shù)。作為再進(jìn)一步的優(yōu)選方案,若計(jì)算機(jī)語(yǔ)言描述對(duì)象為全局變量
若全局變量為新增全局變量,變化信息為該全局變量所在的新版本工程中的文件及所
4處文件的位置;
若全局變量被刪除,變化信息為該全局變量所在的舊版本工程中的文件及所處文件的位置;
若全局變量的類型發(fā)生變化,則變化信息為該全局變量所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置。作為再進(jìn)一步的優(yōu)選方案,若計(jì)算機(jī)語(yǔ)言描述對(duì)象為全局函數(shù)
若全局函數(shù)為新增全局函數(shù),變化信息為該全局函數(shù)的聲明和定義所在的新版工程中的文件及所處文件的位置;
若全局函數(shù)被刪除,變化信息為該全局函數(shù)的聲明和定義所在的舊版本工程中的文件及所處文件的位置;
若全局函數(shù)的聲明或定義發(fā)生了改變,變化信息為該全局函數(shù)的聲明或定義所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置。作為再進(jìn)一步的優(yōu)選方案,若計(jì)算機(jī)語(yǔ)言描述對(duì)象為類聲明及其成員變量與成員函數(shù),變化信息為一系列成員變量和成員函數(shù)變化信息的組合
若成員變量為新增成員變量,變化信息為該成員變量所在的新版本工程中的文件及所處文件的位置;
若成員變量被刪除,變化信息為該成員變量所在的舊版本工程中的文件及所處文件的位置;
若成員變量的類型發(fā)生變化,則變化信息為該成員變量所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置;
若成員函數(shù)為新增成員函數(shù),變化信息為該成員函數(shù)的聲明和定義所在的新版工程中的文件及所處文件的位置;
若成員函數(shù)被刪除,變化信息為該成員函數(shù)的聲明和定義所在的舊版本工程中的文件及所處文件的位置;
若成員函數(shù)的聲明或定義發(fā)生了改變,變化信息為該成員函數(shù)的聲明或定義所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置。作為進(jìn)一步的優(yōu)選方案,通過(guò)解析變化信息記錄文件,形成以新版本工程為基準(zhǔn)的兩個(gè)版本中的發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象集合,在選中某一個(gè)發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象或計(jì)算機(jī)語(yǔ)言描述子對(duì)象時(shí),根據(jù)變化信息記錄文件中記錄的變化信息進(jìn)行文件定位,即定位到相應(yīng)的文件和所處文件的位置。所述定位到相應(yīng)的文件和所處文件的位置是指定位到新版本工程中的文件,對(duì)于被刪除的計(jì)算機(jī)語(yǔ)言描述對(duì)象或計(jì)算機(jī)語(yǔ)言描述子對(duì)象,在新版本工程文件將用橫線給于提示,表示被刪除。本發(fā)明的第二個(gè)發(fā)明目的,在于提供、一種基于面向?qū)ο蟮奈募町惐容^系統(tǒng),以實(shí)現(xiàn)本發(fā)明第一個(gè)發(fā)明目的所提供的比較方法。本發(fā)明的第二個(gè)發(fā)明目的采用如下技術(shù)方案實(shí)現(xiàn)
一種基于面向?qū)ο蟮奈募町惐容^系統(tǒng),用于對(duì)基于面向?qū)ο蟮挠?jì)算機(jī)編程項(xiàng)目工程進(jìn)行差異比較,所述系統(tǒng)包括
通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的新舊兩個(gè)版本的工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象的對(duì)象解析模塊;
對(duì)相同的計(jì)算機(jī)語(yǔ)言描述對(duì)象進(jìn)行分析找出在兩個(gè)版本中的變化信息的對(duì)象比較模
塊;
用于保存變化信息的變化信息記錄文件生成模塊;
對(duì)象解析模塊、對(duì)象比較模塊和變化信息記錄文件生成模塊依次連接。作為一種優(yōu)選方案,所述變化信息記錄文件采用XML生成,所述系統(tǒng)還包括依次連接的XML文檔加載模塊和XML文檔解析模塊
XML文檔加載模塊與變化信息記錄文件生成模塊連接,加載變化信息記錄文件; XML文檔解析模塊通過(guò)解析描述變化信息記錄文件,形成以新版本工程為基準(zhǔn)的兩個(gè)版本中的發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象集合,在選中某一個(gè)發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象或計(jì)算機(jī)語(yǔ)言描述子對(duì)象時(shí),根據(jù)變化信息記錄文件中記錄的變化信息進(jìn)行文件定位,即定位到相應(yīng)的文件和所處文件的位置。本發(fā)明提出了一種基于面向?qū)ο蟮奈募町惐容^,該方法首先定義了一套用于描述工程中的全局變量、全局函數(shù),類聲明及其成員變量與成員函數(shù)的基本信息和變化信息的XML節(jié)點(diǎn)格式,然后通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的兩個(gè)版本的工程中的全局變量、全局函數(shù),類聲明及其成員變量與成員函數(shù),并以新版本工程為基準(zhǔn),將上述所解析出來(lái)的兩個(gè)版本的工程的全局變量、全局函數(shù),類聲明及其成員變量與成員函數(shù)分別依次進(jìn)行比較并找出其區(qū)別,將發(fā)生變化的全局對(duì)象、聲明或定義發(fā)生改變的全局函數(shù)及類的基本信息及變化信息按照上述所定義的XML節(jié)點(diǎn)格式寫(xiě)入XML文件。本發(fā)明實(shí)現(xiàn)了對(duì)整個(gè)工程進(jìn)行比較且由于是對(duì)每個(gè)計(jì)算機(jī)語(yǔ)言描述對(duì)象分別比較,因此可以減少對(duì)文件中的空行語(yǔ)句和注釋語(yǔ)句也進(jìn)行比較的技術(shù)問(wèn)題,從而提高了文件差異比較功能在實(shí)際使用中的效率。
附圖1為本實(shí)施例的流程示意圖。附圖2為本實(shí)施例的系統(tǒng)結(jié)構(gòu)示意圖。備注附圖1和附圖2中的對(duì)象是指工程中的全局變量、全局函數(shù)、類。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)的說(shuō)明。如圖1所示,本發(fā)明提出了一種基于面向?qū)ο蟮奈募町惐容^,該方法將項(xiàng)目工程作為一個(gè)整體進(jìn)行比較。在該方法中,通過(guò)搜索項(xiàng)目工程中的所有文件來(lái)找出工程中所用到的類名及其成員函數(shù)和成員變量、全局變量、全局函數(shù),然后通過(guò)對(duì)項(xiàng)目工程的兩個(gè)不同版本所搜索出來(lái)的上述對(duì)象進(jìn)行逐個(gè)比較,來(lái)找出項(xiàng)目工程的兩個(gè)不同版本的差異。本方法的實(shí)現(xiàn)技術(shù)方案如下
Sl 通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)找出要比較的兩個(gè)版本的工程中的對(duì)象; S2:以新版本工程為基準(zhǔn),對(duì)所解析出來(lái)的兩個(gè)版本的工程的對(duì)象分別依次進(jìn)行比較并找出其區(qū)別;
S3 將發(fā)生變化的對(duì)象的基本信息及變化信息寫(xiě)入XML文件;S4 解析XML文件,生成以新版本工程為基準(zhǔn)的兩個(gè)版本中的發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象集合。步驟Sl中定義的對(duì)象包括全局變量、全局函數(shù)和/或類聲明及其成員變量與成員函數(shù)。對(duì)于全局變量,XML節(jié)點(diǎn)記錄其變量名和類型以及該變量是否發(fā)生了改變;對(duì)于全局函數(shù),XML節(jié)點(diǎn)記錄其聲明所在的文件及其在該文件中的位置和其定義所在的文件及其在該文件中的起始位置以及該函數(shù)的聲明和定義是否發(fā)生了改變;對(duì)于類的聲明與定義,XML節(jié)點(diǎn)記錄其成員變量列表及成員函數(shù)列表以及該類是否發(fā)生了改變,成員變量的描述同全局變量,成員函數(shù)的描述同全局函數(shù)。在將兩個(gè)版本中的上述對(duì)象解析分別出來(lái)以后,以新版本的工程為基準(zhǔn),依次對(duì)上述所解析出來(lái)的對(duì)象列表進(jìn)行比較,進(jìn)而找出項(xiàng)目工程兩個(gè)不同版本的區(qū)別。對(duì)于全局變量的比較,其標(biāo)準(zhǔn)是新版本中的全局變量相對(duì)于舊版本是否被刪除,或者是否屬新增變量,或者變量的類型是否被修改;對(duì)于全局函數(shù)的比較, 其標(biāo)準(zhǔn)是新版本中的全局函數(shù)相對(duì)舊版本來(lái)說(shuō),其聲明是否改變,或者其定義是否改變,或者該函數(shù)是否屬新增函數(shù),或者該函數(shù)是否被刪除。對(duì)于函數(shù)定義是否改變,采用對(duì)函數(shù)體逐行比較的方式來(lái)判斷;對(duì)于類的比較,包括對(duì)類的聲明的比較和對(duì)類的定義的比較,前者是對(duì)類成員變量和成員函數(shù)聲明的比較,后者是對(duì)成員函數(shù)定義的比較。類成員變量的比較同全局變量,而類成員函數(shù)的比較同全局函數(shù)的比較。附圖2為本實(shí)施例的系統(tǒng)結(jié)構(gòu)示意圖。本實(shí)施例為一種基于面向?qū)ο蟮奈募町惐容^系統(tǒng),用于對(duì)基于面向?qū)ο蟮挠?jì)算機(jī)編程項(xiàng)目工程進(jìn)行差異比較,所述系統(tǒng)包括依次連接的對(duì)象解析模塊21、對(duì)象比較模塊 22、XML文檔生成模塊23、XML文檔加載模塊M和XML文檔解析模塊25
對(duì)象解析模塊21通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的新舊兩個(gè)版本的工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象;
對(duì)象比較模塊22對(duì)相同的計(jì)算機(jī)語(yǔ)言描述對(duì)象進(jìn)行分析找出在兩個(gè)版本中的變化信
息;
XML文檔生成模塊23用于采用XML保存變化信息并生成變化信息記錄文件; XML文檔加載模塊M加載變化信息記錄文件;
XML文檔解析模塊25通過(guò)解析描述變化信息記錄文件,形成以新版本工程為基準(zhǔn)的兩個(gè)版本中的發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象集合,在選中某一個(gè)發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象或計(jì)算機(jī)語(yǔ)言描述子對(duì)象時(shí),根據(jù)變化信息記錄文件中記錄的變化信息進(jìn)行文件定位,即定位到相應(yīng)的文件和所處文件的位置。
權(quán)利要求
1.一種基于面向?qū)ο蟮奈募町惐容^方法,對(duì)基于面向?qū)ο蟮挠?jì)算機(jī)編程項(xiàng)目工程進(jìn)行差異比較,其特征在于,所述方法包括通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的新舊兩個(gè)版本的工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象;對(duì)相同的計(jì)算機(jī)語(yǔ)言描述對(duì)象進(jìn)行分析找出在兩個(gè)版本中的變化信息并保存為變化信息記錄文件。
2.根據(jù)權(quán)利要求1所述的比較方法,其特征在于,所述方法采用XML節(jié)點(diǎn)格式用于描述工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象。
3.根據(jù)權(quán)利要求1或2所述的比較方法,其特征在于,所述計(jì)算機(jī)語(yǔ)言描述對(duì)象包括全局變量、全局函數(shù)和/或類聲明及其成員變量與成員函數(shù)。
4.根據(jù)權(quán)力要求3所述的比較方法,其特征在于,若計(jì)算機(jī)語(yǔ)言描述對(duì)象為全局變量 若全局變量為新增全局變量,變化信息為該全局變量所在的新版本工程中的文件及所處文件的位置;若全局變量被刪除,變化信息為該全局變量所在的舊版本工程中的文件及所處文件的位置;若全局變量的類型發(fā)生變化,則變化信息為該全局變量所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置。
5.根據(jù)權(quán)利要求3所述的比較方法,其特征在于,若計(jì)算機(jī)語(yǔ)言描述對(duì)象為全局函數(shù) 若全局函數(shù)為新增全局函數(shù),變化信息為該全局函數(shù)的聲明和定義所在的新版工程中的文件及所處文件的位置;若全局函數(shù)被刪除,變化信息為該全局函數(shù)的聲明和定義所在的舊版本工程中的文件及所處文件的位置;若全局函數(shù)的聲明或定義發(fā)生了改變,變化信息為該全局函數(shù)的聲明或定義所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置。
6.根據(jù)權(quán)力要求3所述的比較方法,其特征在于,若計(jì)算機(jī)語(yǔ)言描述對(duì)象為類聲明及其成員變量與成員函數(shù),變化信息為一系列成員變量和成員函數(shù)變化信息的組合若成員變量為新增成員變量,變化信息為該成員變量所在的新版本工程中的文件及所處文件的位置;若成員變量被刪除,變化信息為該成員變量所在的舊版本工程中的文件及所處文件的位置;若成員變量的類型發(fā)生變化,則變化信息為該成員變量所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置;若成員函數(shù)為新增成員函數(shù),變化信息為該成員函數(shù)的聲明和定義所在的新版工程中的文件及所處文件的位置;若成員函數(shù)被刪除,變化信息為該成員函數(shù)的聲明和定義所在的舊版本工程中的文件及所處文件的位置;若成員函數(shù)的聲明或定義發(fā)生了改變,變化信息為該成員函數(shù)的聲明或定義所在的新舊兩個(gè)版本的工程中的文件及所處文件的位置。
7.根據(jù)權(quán)利要求1或2所述的比較方法,其特征在于,通過(guò)解析變化信息記錄文件,形成以新版本工程為基準(zhǔn)的兩個(gè)版本中的發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象集合,在選中某一個(gè)發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象或計(jì)算機(jī)語(yǔ)言描述子對(duì)象時(shí),根據(jù)變化信息記錄文件中記錄的變化信息進(jìn)行文件定位,即定位到相應(yīng)的文件和所處文件的位置。
8.一種基于面向?qū)ο蟮奈募町惐容^系統(tǒng),用于對(duì)基于面向?qū)ο蟮挠?jì)算機(jī)編程項(xiàng)目工程進(jìn)行差異比較,其特征在于,所述系統(tǒng)包括通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的新舊兩個(gè)版本的工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象的對(duì)象解析模塊;對(duì)相同的計(jì)算機(jī)語(yǔ)言描述對(duì)象進(jìn)行分析找出在兩個(gè)版本中的變化信息的對(duì)象比較模塊;用于保存變化信息的變化信息記錄文件生成模塊;對(duì)象解析模塊、對(duì)象比較模塊和變化信息記錄文件生成模塊依次連接。
9.根據(jù)權(quán)利要求8所述的比較系統(tǒng),其特征在于,所述變化信息記錄文件采用XML生成,所述系統(tǒng)還包括依次連接的XML文檔加載模塊和XML文檔解析模塊XML文檔加載模塊與變化信息記錄文件生成模塊連接,加載變化信息記錄文件; XML文檔解析模塊通過(guò)解析描述變化信息記錄文件,形成以新版本工程為基準(zhǔn)的兩個(gè)版本中的發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象集合,在選中某一個(gè)發(fā)生變化的計(jì)算機(jī)語(yǔ)言描述對(duì)象或計(jì)算機(jī)語(yǔ)言描述子對(duì)象時(shí),根據(jù)變化信息記錄文件中記錄的變化信息進(jìn)行文件定位,即定位到相應(yīng)的文件和所處文件的位置。
全文摘要
本發(fā)明涉及軟件版本管理相關(guān)技術(shù)領(lǐng)域,特別是一種基于面向?qū)ο蟮奈募町惐容^方法及其系統(tǒng),所述方法包括通過(guò)利用關(guān)鍵字進(jìn)行語(yǔ)法解析來(lái)分別找出要比較的新舊兩個(gè)版本的工程中的計(jì)算機(jī)語(yǔ)言描述對(duì)象;對(duì)相同的計(jì)算機(jī)語(yǔ)言描述對(duì)象進(jìn)行分析找出在兩個(gè)版本中的變化信息并保存為變化信息記錄文件。本發(fā)明實(shí)現(xiàn)了對(duì)整個(gè)工程進(jìn)行比較且由于是對(duì)每個(gè)計(jì)算機(jī)語(yǔ)言描述對(duì)象分別比較,因此可以減少對(duì)文件中的空行語(yǔ)句和注釋語(yǔ)句也進(jìn)行比較的技術(shù)問(wèn)題,從而提高了文件差異比較功能在實(shí)際使用中的效率。
文檔編號(hào)G06F17/30GK102253992SQ20111018814
公開(kāi)日2011年11月23日 申請(qǐng)日期2011年7月6日 優(yōu)先權(quán)日2011年7月6日
發(fā)明者康曉林, 羅敬清 申請(qǐng)人:廣東威創(chuàng)視訊科技股份有限公司