The invention provides a duplicate code fragment query method and device, then determine the suffix by code sequence composed of a plurality of code fragments, the ranking position of each suffix contains the code fragment in the code sequence as the elements, structure of the code sequence number suffix group, according to the common part between the suffix by each element in the suffix array to calculate the query, the plurality of code fragments in duplicate code fragment. Because the storage structure of the suffix array is only in numerical order where the code fragment indicating a suffix, rather than suffix code fragments of the contents stored in the suffix array, therefore, is not bound to all of the code fragment content stored in memory, and run from the smaller overhead, solve in the prior art query whether there are duplicate code fragments, the problem of larger operation cost.
【技術(shù)實現(xiàn)步驟摘要】
重復(fù)代碼片段查詢方法和裝置
本專利技術(shù)涉及信息技術(shù),尤其涉及一種重復(fù)代碼片段查詢方法和裝置。
技術(shù)介紹
在軟件開發(fā)過程中,經(jīng)常會將工作量較大的軟件開發(fā)項目分割為工作量較小的子項目,并由不同的程序員分別對子項目編寫程序代碼。當(dāng)兩個不同的子項目均需要用到同一個程序段時,往往會出現(xiàn)兩個不同的子項目中出現(xiàn)完全相同的程序代碼,在這種情況下,若需要對該程序段進行修改,則需要對各子項目中重復(fù)出現(xiàn)的全部該程序段均進行修改,工作量較大且容易出現(xiàn)錯誤。因此,在對子項目進行整合之后,需要對整合所獲得的項目進行優(yōu)化,具體來說,需要針對項目的程序代碼進行重復(fù)代碼片段的查詢,將查詢出的重復(fù)代碼片段進行復(fù)用或者說合并,從而提高可維護性。現(xiàn)有技術(shù)中在查詢重復(fù)代碼片段時,需要針對每一個代碼片段依次與其余代碼片段進行比較,從而判斷出是否存在重復(fù)代碼片段,由于這種方式需要將全部的代碼片段數(shù)據(jù)存儲在內(nèi)存中,因此運行開銷較大。
技術(shù)實現(xiàn)思路
本專利技術(shù)提供一種重復(fù)代碼片段查詢方法和裝置,用于解決現(xiàn)有技術(shù)中查詢是否存在重復(fù)代碼片段時,運行開銷較大的技術(shù)問題。為達到上述目的,本專利技術(shù)的實施例采用如下技術(shù)方案:第一方面,提供了一種重復(fù)代碼片段查詢方法,包括:獲取包含多個代碼片段的代碼序列的各后綴;將各后綴所包含的代碼片段在所述代碼序列中的排序位置作為元素,構(gòu)造所述代碼序列的第一后綴數(shù)組;根據(jù)由所述第一后綴數(shù)組中的各元素所得到的后綴,計算各后綴之間的公共部分;利用所述公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段。第二方面,提供了一種重復(fù)代碼片段查詢裝置,包括:后綴模塊,用于獲取包含多個代碼片段的代碼序列的 ...
【技術(shù)保護點】
一種重復(fù)代碼片段查詢方法,其特征在于,包括:獲取包含多個代碼片段的代碼序列的各后綴;將各后綴所包含的代碼片段在所述代碼序列中的排序位置作為元素,構(gòu)造所述代碼序列的第一后綴數(shù)組;根據(jù)由所述第一后綴數(shù)組中的各元素所得到的后綴,計算各后綴之間的公共部分;利用所述公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段。
【技術(shù)特征摘要】
1.一種重復(fù)代碼片段查詢方法,其特征在于,包括:獲取包含多個代碼片段的代碼序列的各后綴;將各后綴所包含的代碼片段在所述代碼序列中的排序位置作為元素,構(gòu)造所述代碼序列的第一后綴數(shù)組;根據(jù)由所述第一后綴數(shù)組中的各元素所得到的后綴,計算各后綴之間的公共部分;利用所述公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段。2.根據(jù)權(quán)利要求1所述的重復(fù)代碼片段查詢方法,其特征在于,所述根據(jù)由所述第一后綴數(shù)組中的元素所得到的后綴,計算后綴的公共部分包括:從所述代碼序列中,讀取第一后綴數(shù)組中元素所指示的排序位置得到后綴;根據(jù)得到的后綴對應(yīng)代入第一后綴數(shù)組所得到的第二后綴數(shù)組,計算得到各后綴之間的最長公共前綴。3.根據(jù)權(quán)利要求1所述的重復(fù)代碼片段查詢方法,其特征在于,所述利用公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段包括:當(dāng)至少兩個后綴之間存在公共部分時,確定所述多個代碼片段中存在重復(fù)代碼片段。4.根據(jù)權(quán)利要求3所述的重復(fù)代碼片段查詢方法,其特征在于,所述確定所述多個代碼片段中存在重復(fù)代碼片段之后,還包括:確定所述公共部分對應(yīng)的重復(fù)代碼片段在所述代碼序列中的排序位置。5.根據(jù)權(quán)利要求4所述的重復(fù)代碼片段查詢方法,其特征在于,所述代碼序列是根據(jù)各代碼片段在源文件中的位置,對各代碼片段進行排序得到的;所述確定所述公共部分對應(yīng)的重復(fù)代碼片段在所述代碼序列中的排序位置之后,還包括:根據(jù)所述重復(fù)代碼片段在所述代碼序列中的排序位置,確定所述重復(fù)代碼片段在所述源文件中的位置。6.根據(jù)權(quán)利要求1所述的重復(fù)代碼片段查詢方法,其特征在于,所述構(gòu)造代碼序列的第一后綴數(shù)組,包括:對所述代碼序列的各后綴按照字典序進行排序;將排序后的各后綴所包含的第一個代碼片段在所述代碼序列中的排序位置作為所述第一后綴數(shù)組中對應(yīng)元素的取值。7.根據(jù)權(quán)利要求1-6任一項所述的重復(fù)代碼片段查詢方法,其特征在于,所述獲取包含多個代碼片段的代碼序列的各后綴之前,還包括:根據(jù)預(yù)設(shè)規(guī)則對代碼片段中的各行代碼進行預(yù)處理。8.根據(jù)權(quán)利要求7所述的重復(fù)代碼片段查詢方法,其特征在于,所述預(yù)設(shè)規(guī)則,包括:針對每一行代碼,刪除以停用詞為開頭的代碼所在行;和/或,針對每一行代碼,刪除預(yù)設(shè)字符;和/或,若所述代碼片段分別屬于至少兩個源文件,在每一個源文件的結(jié)尾增加所述源文件對應(yīng)的分隔行。9.根據(jù)權(quán)利要求8所述的重復(fù)代碼片段查詢方法,其特征在于,所述分隔行包括所述源文件的唯一標(biāo)識和/或所述源文件的存儲路徑;所述預(yù)設(shè)字符包括...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:屠寅海,
申請(專利權(quán))人:阿里巴巴集團控股有限公司,
類型:發(fā)明
國別省市:開曼群島,KY
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。