[發(fā)明專利]重復(fù)代碼片段查詢方法和裝置在審
| 申請?zhí)枺?/td> | 201610384291.8 | 申請日: | 2016-06-01 |
| 公開(公告)號: | CN106919433A | 公開(公告)日: | 2017-07-04 |
| 發(fā)明(設(shè)計(jì))人: | 屠寅海 | 申請(專利權(quán))人: | 阿里巴巴集團(tuán)控股有限公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 北京市惠誠律師事務(wù)所11353 | 代理人: | 劉子敬 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 重復(fù) 代碼 片段 查詢 方法 裝置 | ||
1.一種重復(fù)代碼片段查詢方法,其特征在于,包括:
獲取包含多個(gè)代碼片段的代碼序列的各后綴;
將各后綴所包含的代碼片段在所述代碼序列中的排序位置作為元素,構(gòu)造所述代碼序列的第一后綴數(shù)組;
根據(jù)由所述第一后綴數(shù)組中的各元素所得到的后綴,計(jì)算各后綴之間的公共部分;
利用所述公共部分,查詢所述多個(gè)代碼片段中的重復(fù)代碼片段。
2.根據(jù)權(quán)利要求1所述的重復(fù)代碼片段查詢方法,其特征在于,所述根據(jù)由所述第一后綴數(shù)組中的元素所得到的后綴,計(jì)算后綴的公共部分包括:
從所述代碼序列中,讀取第一后綴數(shù)組中元素所指示的排序位置得到后綴;
根據(jù)得到的后綴對應(yīng)代入第一后綴數(shù)組所得到的第二后綴數(shù)組,計(jì)算得到各后綴之間的最長公共前綴。
3.根據(jù)權(quán)利要求1所述的重復(fù)代碼片段查詢方法,其特征在于,所述利用公共部分,查詢所述多個(gè)代碼片段中的重復(fù)代碼片段包括:
當(dāng)至少兩個(gè)后綴之間存在公共部分時(shí),確定所述多個(gè)代碼片段中存在重復(fù)代碼片段。
4.根據(jù)權(quán)利要求3所述的重復(fù)代碼片段查詢方法,其特征在于,所述確定所述多個(gè)代碼片段中存在重復(fù)代碼片段之后,還包括:
確定所述公共部分對應(yīng)的重復(fù)代碼片段在所述代碼序列中的排序位置。
5.根據(jù)權(quán)利要求4所述的重復(fù)代碼片段查詢方法,其特征在于,所述代碼序列是根據(jù)各代碼片段在源文件中的位置,對各代碼片段進(jìn)行排序得到的;
所述確定所述公共部分對應(yīng)的重復(fù)代碼片段在所述代碼序列中的排序位置之后,還包括:
根據(jù)所述重復(fù)代碼片段在所述代碼序列中的排序位置,確定所述重復(fù)代碼片段在所述源文件中的位置。
6.根據(jù)權(quán)利要求1所述的重復(fù)代碼片段查詢方法,其特征在于,所述構(gòu)造代碼序列的第一后綴數(shù)組,包括:
對所述代碼序列的各后綴按照字典序進(jìn)行排序;
將排序后的各后綴所包含的第一個(gè)代碼片段在所述代碼序列中的排序位置作為所述第一后綴數(shù)組中對應(yīng)元素的取值。
7.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的重復(fù)代碼片段查詢方法,其特征在于,所述獲取包含多個(gè)代碼片段的代碼序列的各后綴之前,還包括:
根據(jù)預(yù)設(shè)規(guī)則對代碼片段中的各行代碼進(jìn)行預(yù)處理。
8.根據(jù)權(quán)利要求7所述的重復(fù)代碼片段查詢方法,其特征在于,所述預(yù)設(shè)規(guī)則,包括:
針對每一行代碼,刪除以停用詞為開頭的代碼所在行;
和/或,針對每一行代碼,刪除預(yù)設(shè)字符;
和/或,若所述代碼片段分別屬于至少兩個(gè)源文件,在每一個(gè)源文件的結(jié)尾增加所述源文件對應(yīng)的分隔行。
9.根據(jù)權(quán)利要求8所述的重復(fù)代碼片段查詢方法,其特征在于,所述分隔行包括所述源文件的唯一標(biāo)識和/或所述源文件的存儲路徑;所述預(yù)設(shè)字符包括空格和/或制表符。
10.一種重復(fù)代碼片段查詢裝置,其特征在于,包括:
后綴模塊,用于獲取包含多個(gè)代碼片段的代碼序列的各后綴;
構(gòu)造模塊,用于將各后綴所包含的代碼片段在所述代碼序列中的排序位置作為元素,構(gòu)造所述代碼序列的第一后綴數(shù)組;
計(jì)算模塊,用于根據(jù)由所述第一后綴數(shù)組中的各元素所得到的后綴,計(jì)算各后綴之間的公共部分;
查詢模塊,用于利用所述公共部分,查詢所述多個(gè)代碼片段中的重復(fù)代碼片段。
11.根據(jù)權(quán)利要求10所述的重復(fù)代碼片段查詢裝置,其特征在于,所述計(jì)算模塊,包括:
讀取單元,用于從所述代碼序列中,讀取第一后綴數(shù)組中元素所指示的排序位置得到后綴;
計(jì)算單元,用于根據(jù)得到的后綴對應(yīng)代入第一后綴數(shù)組所得到的第二后綴數(shù)組,計(jì)算得到各后綴之間的最長公共前綴。
12.根據(jù)權(quán)利要求10所述的重復(fù)代碼片段查詢裝置,其特征在于,所述查詢模塊,包括:
判定單元,用于當(dāng)至少兩個(gè)后綴之間存在公共部分時(shí),確定所述多個(gè)代碼片段中存在重復(fù)代碼片段。
13.根據(jù)權(quán)利要求12所述的重復(fù)代碼片段查詢裝置,其特征在于,所述查詢模塊,還包括:
位置單元,用于確定所述公共部分對應(yīng)的重復(fù)代碼片段在所述代碼序列中的排序位置。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團(tuán)控股有限公司,未經(jīng)阿里巴巴集團(tuán)控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610384291.8/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





