[發明專利]一種基于索引的Java軟件代碼克隆檢測方法有效
| 申請號: | 201510043006.1 | 申請日: | 2015-01-28 |
| 公開(公告)號: | CN104572471B | 公開(公告)日: | 2017-10-03 |
| 發明(設計)人: | 俞東進;舒翔;陳真理;王杰 | 申請(專利權)人: | 杭州電子科技大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F21/12 |
| 代理公司: | 浙江杭州金通專利事務所有限公司33100 | 代理人: | 王佳健 |
| 地址: | 310018 浙*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 索引 java 軟件 代碼 克隆 檢測 方法 | ||
技術領域
本發明屬于程序理解技術領域,具體涉及到一種基于索引的Java軟件代碼克隆檢測方法。
背景技術
軟件工程領域的關注點之一是如何提高軟件開發過程的開發效率和軟件產品質量。在軟件開發的整個周期中,軟件維護占了其中大部分資源和時間,而軟件維護中涉及讀入源代碼、掃描源代碼和理解源代碼所做的修改等工作又占了大部分的資源和時間。因此,要改善軟件開發環境和提高軟件產品質量,就必須重視軟件維護,并給軟件維護人員提供合適的理解程序的方法。
通過分析程序代碼,挖掘出程序代碼中出現的克隆現象,并借助克隆檢測技術可以減少軟件維護人員的工作量,提高軟件維護過程的效率。例如,通過對軟件代碼的克隆情況進行檢測,可以幫助開發人員和維護人員發現和修改軟件系統中的bug。代碼克隆檢測技術也可以應用于代碼抄襲檢測、軟件版本檢測以及庫函數重構。
然而,隨著軟件規模的不斷增長,對克隆代碼檢測的效率要求也相應提高。例如,由于需要把由不同公司或者組織開發的上千萬行的軟件代碼進行相似度的比較,如果不能在一個合適的時間范圍內獲取代碼克隆將使檢測方法的有效性大打折扣。
發明內容
本發明針對現有技術的不足,提供了一種基于索引的Java軟件代碼克隆檢測方法。
本發明方法的具體步驟是:
步驟(1).在通用計算機上設置單獨的鍵值數據庫,用于存放全局代碼段物理索引和全局相似代碼段物理索引,以及全局輔助物理索引,以上三個索引均為鍵值對結構;
步驟(2).以可用內存為限,依次讀入Java軟件中的源文件的源代碼至通用計算機內存,通過詞法分析將源代碼中的每行語句解析為詞項序列,再通過歸一化操作將詞項序列轉換為字符序列表示,得到每個文件對應的“語句行號字符序列”鍵值對集合,讀入文件的源代碼的同時將“文件路徑文件最新時間戳”鍵值對加入,其中文件路徑為文件的全路徑,包括文件名和擴展名;
步驟(3).遍歷,將其中每隔行的字符序列作為一個代碼段并計算該字符序列的代碼段信息摘要,建立“文件路徑代碼段起始行,代碼段終止行,代碼段信息摘要”鍵值對并加入,建立“代碼段信息摘要文件路徑,代碼段起始行,代碼段終止行”鍵值對并加入,重復步驟(2)和(3)至軟件中的所有源文件都已處理完畢;
步驟(4).在需要檢測克隆代碼的時候,從待檢測的源文件集合中讀入某個源文件的源代碼至通用計算機內存,通過詞法分析將源代碼中的每行語句解析為詞項序列,再通過歸一化操作將詞項序列轉換為字符序列表示,得到每個文件對應的“語句行號字符序列”鍵值對集合,讀入的同時建立“文件路徑文件最新時間戳”鍵值對;
步驟(5).從中取出與源文件對應的文件時間戳,若,即源文件未被修改,則從中取得源文件的文件路徑對應的值集合記為,轉入步驟(8);否則,在中更新源文件對應的文件時間戳為,并遍歷,將其中每隔行的字符序列作為一個代碼段并計算該字符序列的代碼段信息摘要,建立“文件路徑代碼段起始行,代碼段終止行,代碼段信息摘要”鍵值對集合,并將鍵值對集合中該文件路徑對應的值部分加入臨時值集合;
步驟(6).取出中與對應的值集合并記為,將和做差集運算得到新增的值集合;遍歷,取出其中每個元素的代碼段信息摘要,建立“代碼段信息摘要文件路徑,代碼段起始行,代碼段終止行”鍵值對并將其加入;
步驟(7).將和做差集運算得到過期的值集合,遍歷,取出其中每個元素的代碼段信息摘要,并在中找到對應的“代碼段信息摘要文件路徑,代碼段起始行,代碼段終止行”鍵值對將其刪除,在中刪除與文件路徑對應的鍵值對,并將鍵值對集合合并至,記為;
步驟(8).遍歷集合中的每個元素獲取該元素的代碼段信息摘要,在中查找和代碼段信息摘要匹配的鍵,并獲得該鍵對應的值集合,從中的每一個元素中可以獲得源文件克隆代碼段所在文件名、代碼段起始行號和終止行號;
步驟(9).重復步驟(4)、(5)、(6)、(7)、(8),至待檢測的源文件集合中的所有源文件都已處理完畢;
本發明所提供的基于索引的軟件代碼克隆檢測方法由一組功能模塊組成,它們包括:預處理模塊、克隆檢測模塊和克隆報告模塊。假設對于一般的檢測過程,內存中已按步驟(1)、(2)和(3)建立全局代碼段物理索引和全局相似代碼段物理索引,以及全局輔助物理索引。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州電子科技大學,未經杭州電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510043006.1/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種微小差分電容測量電路
- 下一篇:一種高頻水冷變壓器





