• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    重復(fù)代碼片段查詢方法和裝置制造方法及圖紙

    技術(shù)編號:15762730 閱讀:238 留言:0更新日期:2017-07-05 22:41
    本發(fā)明專利技術(shù)提供了一種重復(fù)代碼片段查詢方法和裝置,通過對多個代碼片段所構(gòu)成的代碼序列確定各后綴之后,將各后綴所包含的代碼片段在代碼序列中的排序位置作為元素,構(gòu)造代碼序列的后綴數(shù)組,從而根據(jù)由后綴數(shù)組中的各元素所計算出的各后綴之間的公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段。由于所構(gòu)造的后綴數(shù)組中存儲的僅為一個指示后綴中代碼片段所在排序位置的數(shù)值,而不是將后綴中代碼片段的內(nèi)容存儲在后綴數(shù)組中,因此,也就不必將全部的代碼片段內(nèi)容存儲在內(nèi)存中,從而運行的開銷較小,解決了現(xiàn)有技術(shù)中查詢是否存在重復(fù)代碼片段時,運行開銷較大的技術(shù)問題。

    Method and device for querying repeated code fragments

    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ù)代碼片段查詢裝置,包括:后綴模塊,用于獲取包含多個代碼片段的代碼序列的各后綴;構(gòu)造模塊,用于將各后綴所包含的代碼片段在所述代碼序列中的排序位置作為元素,構(gòu)造所述代碼序列的第一后綴數(shù)組;計算模塊,用于根據(jù)由所述第一后綴數(shù)組中的各元素所得到的后綴,計算各后綴之間的公共部分;查詢模塊,用于利用所述公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段。本專利技術(shù)實施例提供的重復(fù)代碼片段查詢方法和裝置,通過對多個代碼片段所構(gòu)成的代碼序列確定各后綴之后,將各后綴所包含的代碼片段在代碼序列中的排序位置作為元素,構(gòu)造代碼序列的后綴數(shù)組,從而根據(jù)由后綴數(shù)組中的各元素所計算出的各后綴之間的公共部分,查詢所述多個代碼片段中的重復(fù)代碼片段。由于所構(gòu)造的后綴數(shù)組中存儲的僅為一個指示后綴中代碼片段所在排序位置的數(shù)值,而不是將后綴中代碼片段的內(nèi)容存儲在后綴數(shù)組中,因此,也就不必將全部的代碼片段內(nèi)容存儲在內(nèi)存中,從而運行的開銷較小,解決了現(xiàn)有技術(shù)中查詢是否存在重復(fù)代碼片段時,運行開銷較大的技術(shù)問題。上述說明僅是本專利技術(shù)技術(shù)方案的概述,為了能夠更清楚了解本專利技術(shù)的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本專利技術(shù)的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本專利技術(shù)的具體實施方式。附圖說明通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本專利技術(shù)的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1為本專利技術(shù)實施例一提供的一種重復(fù)代碼片段查詢方法的流程示意圖;圖2為重復(fù)代碼片段查詢方法的執(zhí)行示意圖;圖3為本專利技術(shù)實施例二提供的一種重復(fù)代碼片段查詢方法的流程示意圖;圖4為逐個源文件進行處理的流程示意圖;圖5為逐行對源文件的代碼進行處理的流程示意圖;圖6為高度數(shù)組的計算示意圖;圖7為本專利技術(shù)實施例三提供的一種重復(fù)代碼片段查詢裝置的結(jié)構(gòu)示意圖;圖8為本專利技術(shù)實施例四提供的一種重復(fù)代碼片段查詢裝置的結(jié)構(gòu)示意圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。為了便于理解本專利技術(shù)所提供的重復(fù)代碼片段查詢方法和裝置,在描述具體實施例之前,對實施例中所涉及的技術(shù)術(shù)語進行解釋:序列(Sequence):元素的有序排列。在本專利技術(shù)實施例中,將代碼片段作為元素,對這些代碼片段進行有序排列所獲得的序列稱為代碼序列。后綴(Suffix):后綴是指從某一個位置i開始到整個序列結(jié)尾的一個子序列,也叫子串或余串,記做Suffix(i)。后綴數(shù)組:后綴數(shù)組是一個一維數(shù)組,它用于記錄后綴的有序排列。在本專利技術(shù)實施例中,第一后綴數(shù)組中的元素為后綴中所包含的代碼片段在代碼序列中的排序位置,第二后綴數(shù)組中的元素為后綴的內(nèi)容。名次數(shù)組:名次數(shù)組Rank[i]保存的是Suffix(i)在所有后綴中從小到大排列的“名次”。高度數(shù)組:定義高度數(shù)組中的元素height[i]=Suffix(sa[i-1])和Suffix(sa[i])的最長公共前綴,也就是排名相鄰的兩個后綴的最長公共前綴。那么對于j和k,不妨設(shè)rank[j]<rank[k],則有以下性質(zhì):Suffix(j)和Suffix(k)的最長公共前綴為height[rank[j]+1],height[rank[j]+2],height[rank[j]+3],…,height[rank[k]]中的最小值。最長公共前綴:最長公共前綴是指從兩個后綴的第一個元素開始,所能夠獲得的兩后綴之間具有的最長相同部分,這里的最長相同部分也稱為公共部分,這個最長相同部分所包含的元素數(shù)稱為最長公共前綴的長度。例如兩個后綴分別為“accs”和“acbsa”則兩個后綴的最長公共前綴為“ac”,長度為2。停用詞:可以明確表示整行為非有效代碼的詞,如“#include”,“import”。根據(jù)語言的不同,停用詞會各不相同。此處簡要解釋了技術(shù)術(shù)語的含義,以上技術(shù)術(shù)語會在后續(xù)結(jié)合具體實施例進行進一步地解釋。下面結(jié)合附圖對本專利技術(shù)實施例提供的重復(fù)代碼片段查詢方法和裝置進行詳細描述。實施例一在程序開發(fā)過程中,程序員從網(wǎng)絡(luò)或者其他位置復(fù)制了同一段代碼并將其粘貼到當(dāng)前所開發(fā)的程序中的不同位置時,便會在多個源文件中的不同位置中出現(xiàn)重復(fù)代碼片段。由于重復(fù)代碼片段極易導(dǎo)致程序的維護性差,因此,作為程序質(zhì)量評價的指標(biāo)之一,需要對源文件中各代碼片段所構(gòu)成的代碼序列中是否存在重復(fù)代碼片段進行查詢。作為一種可能的實現(xiàn)方式,本實施例所提供的方法可以由代碼質(zhì)量評價工具執(zhí)行。圖1為本專利技術(shù)實施例一提供的一種重復(fù)代碼片段查詢方法的流程示意圖,如圖1所示,方法包括:步驟101、獲取包含多個代碼片段的代碼序列的各后綴。其中,源文件中的代碼被預(yù)先劃分為各個代碼片段,每一個代碼片段包括預(yù)設(shè)行的程序代碼,這里的預(yù)設(shè)行數(shù)可以根據(jù)查詢精度進行確定,若需要較高的查詢精度,可以設(shè)置較低的預(yù)設(shè)行數(shù),若需要較低的查詢精度,可以設(shè)置較高的預(yù)設(shè)行數(shù),但預(yù)設(shè)行數(shù)的取值至少為一。在不同次的查詢中,各次查詢所劃分的代碼片段之間可以具有相同的行數(shù),也可以具有不同的行數(shù)。為了便于代碼片段的劃分,每一次查詢中,各代碼片段之間可以具有相同的行數(shù)。作為一種可能的實現(xiàn)方式,根據(jù)各個代碼片段在源文件中所在行的前后位置,按照預(yù)設(shè)順序,例如由前至后的順序或者由后至前的順序,對代碼片段進行排序,獲得代碼序列,在代碼序列中,每一個元素對應(yīng)源文件中的一個本文檔來自技高網(wǎng)...
    重復(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

    網(wǎng)友詢問留言 已有0條評論
    • 還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 2020无码专区人妻系列日韩| 18禁网站免费无遮挡无码中文 | 亚洲成av人片在线观看天堂无码 | 国产成人无码精品久久二区三区| 99久久无码一区人妻a黑| 无码专区国产精品视频 | 日韩免费无码一区二区三区| 国产亚洲?V无码?V男人的天堂 | 亚洲国产综合无码一区二区二三区 | 亚洲AV无码一区二区乱子仑 | 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 亚洲中文字幕久久精品无码APP| 久久久无码精品亚洲日韩蜜臀浪潮| 蜜臀AV无码精品人妻色欲| 无码人妻一区二区三区免费看 | 孕妇特级毛片WW无码内射| 国产乱人伦Av在线无码| 免费无码婬片aaa直播表情| 亚洲国产成人无码AV在线影院| 日韩欧国产精品一区综合无码| 精品久久久久久无码中文字幕一区| 少妇人妻偷人精品无码视频| 国产成人无码AV一区二区 | 日韩人妻无码精品系列| 免费无码肉片在线观看| 亚洲成a人无码亚洲成www牛牛| 亚洲AV无码久久| 国产成人精品无码播放| 免费无码又爽又刺激网站| 精品久久久久久无码人妻热| 狠狠爱无码一区二区三区| 国产成人无码精品久久久小说| 亚洲中文字幕无码久久| 亚洲人成人伊人成综合网无码| 久久久久无码国产精品一区| 亚洲AV无码日韩AV无码导航| 无码少妇一区二区| 无码乱码av天堂一区二区| 亚洲AV无码一区二区三区牲色| 亚洲av无码一区二区三区天堂| 亚洲午夜无码毛片av久久京东热|