• 
    <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
    主站蜘蛛池模板: 国精品无码A区一区二区| 亚洲综合无码AV一区二区| 国精无码欧精品亚洲一区| 无码专区天天躁天天躁在线| 东京热一精品无码AV| 人妻少妇乱子伦无码视频专区 | 色综合久久久无码中文字幕| 久久久久久无码国产精品中文字幕 | 自慰系列无码专区| 无码av人妻一区二区三区四区| aⅴ一区二区三区无卡无码| 亚洲AV无码XXX麻豆艾秋| 亚洲另类无码一区二区三区| 亚洲国产成人精品无码一区二区| 亚洲av无码无在线观看红杏| 国产成人无码综合亚洲日韩| 亚洲熟妇无码一区二区三区导航| 成年无码av片完整版| 成人免费a级毛片无码网站入口| 无码137片内射在线影院| 人妻丰满熟妞av无码区| 亚洲AV无码成H人在线观看| 九九在线中文字幕无码| 精品一区二区三区无码免费直播 | 久久久久亚洲精品无码蜜桃 | 免费无遮挡无码视频网站| 无码人妻精品一区二区三区99性| 亚洲乱亚洲乱妇无码麻豆| 精品无码久久久久久久久久| 成在人线AV无码免费| 无码精品前田一区二区| 久久精品无码一区二区三区免费| 人妻丰满熟妇AV无码片| 久久久久亚洲av无码专区喷水 | 精品无码久久久久久久动漫| 人妻少妇乱子伦无码专区| 国产AV天堂无码一区二区三区 | 亚洲av永久无码精品网站| 国产亚洲大尺度无码无码专线| 中文字幕久无码免费久久| heyzo高无码国产精品|