[發明專利]一種高效的多版本跨項目軟件代碼克隆檢測方法在審
| 申請號: | 202010122695.6 | 申請日: | 2020-02-27 |
| 公開(公告)號: | CN111324380A | 公開(公告)日: | 2020-06-23 |
| 發明(設計)人: | 吳毅堅;方維康 | 申請(專利權)人: | 復旦大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 高效 版本 項目 軟件 代碼 克隆 檢測 方法 | ||
本發明屬于軟件代碼分析技術領域,具體為一種高效的多版本跨項目軟件代碼克隆檢測方法。本發明首先獲取含有多個版本的軟件項目的版本信息,接著基于方法名及文件路徑構建將不同版本、代碼內容相同或高度相似的同一方法建立方法版本組,再選取每個方法版本組中最早的版本作為樣本方法,樣本方法的集合稱為歷史映像,然后對所有的歷史映像進行克隆檢測,同時建立起樣本方法和方法版本組間的索引關系,稱之為方法索引。最終根據樣本方法的克隆檢測結果和方法索引恢復原始的全量克隆關系。本發明考慮到項目的多個版本中有大量的重復代碼,在代碼克隆檢測時屏蔽重復代碼,提高了多版本跨項目代碼克隆檢測的效率。
技術領域
本發明屬于軟件開發技術領域,具體涉及一種高效的多版本跨項目軟件代碼克隆檢測方法。
背景技術
克隆代碼產生的原因多種多樣,軟件開發人員對軟件代碼有意或無意地進行復制粘貼是克隆代碼產生的最主要原因,并且克隆通常會伴隨著一些輕微的修改,但克隆在提升代碼開發速度的同時也帶來了許多隱患。要了解一個復雜軟件項目內部重復出現的代碼以及與其他軟件項目的關聯關系,提升目標軟件關鍵代碼的穩定性,需要利用代碼克隆檢測技術和自動化的代碼分析技術來實現。并且代碼克隆信息可以輔助代碼評審和分析人員發現目標軟件系統的關鍵性代碼并形成完整、全面的理解,為深入理解軟件系統奠定數據基礎,從而提高系統健壯性和穩定性。
目前國內外研究人員對代碼克隆檢測技術已做出許多研究成果。包括但不限于:Baker等人提出基于文本的克隆檢測方法,將源代碼作為文本處理并以文本行為基本單位進行比較以檢測克隆。Kamiya等人的CCFinder利用詞法分析器將每行源代碼劃分為Token,然后對Token序列進行轉換,最后使用基于后綴樹的匹配算法來對轉換后的Token序列進行克隆檢測。Baxter 等人提出了抽象語法樹檢測法,該方法將源代碼解析為語法樹進行克隆分析,從而更多地保留了語法結構。Ferrante 等人提出了基于程序依賴圖的克隆檢測方法,該方法將源代碼轉化成程序依賴圖然后利用圖與圖之間的相似性檢測克隆。
當前學術界的克隆檢測技術或工具主要集中于克隆檢測算法本身,然而對于某些含有多個版本的項目,由于版本間含有大量的重復代碼,因此無論采用何種克隆檢測工具,都不可避免的存在大量的不必要的重復檢測。為了能更高效的檢測克隆,考慮到版本間重復代碼的規律性,提出一種比傳統代碼克隆檢測方法更加適合多版本項目的克隆檢測方法,大大提升了多版本項目克隆檢測的效率。
發明內容
本發明的目的是考慮到多版本項目中存在大量的重復代碼,傳統的克隆檢測方法會有許多不必要的重復檢測,為彌補傳統方法的不足而提供了一種基于版本間代碼映射關系的高效多版本軟件項目代碼克隆檢測方法。
本發明提供的基于版本間代碼映射關系的高效多版本軟件項目代碼克隆檢測方法,主要思想為:為擁有多個版本的項目,根據一些啟發式規則將不同版本、代碼內容相同或高度相似的相同方法建立方法版本組,再從每個方法版本組中選取一個方法作為樣本參與克隆檢測。最后將樣本方法的克隆檢測結果恢復成完整的克隆檢測結果。
本發明方法具體步驟如下:
a.獲取每個待分析軟件項目的歷史版本信息,包括版本名稱、發布時間;
b.對于每個項目,(1)建立方法版本組:首先為不同版本、代碼內容相同或高度相似的同一方法建立方法版本組;(2)構建歷史映像:再從所有方法版本組中選取最早的版本作為樣本方法,這些樣本方法的集合稱為該項目的歷史映像;(3)建立方法索引:最后,建立樣本方法和其所在的方法版本組間的索引關系,該索引稱為方法索引。若項目只有一個版本,則該版本就是這個項目的歷史映像;
c.采用代碼克隆檢測工具對各個項目的歷史映像進行克隆檢測,得到克隆檢測結果;
d.用得到的克隆檢測結果結合步驟b保存的方法索引恢復原始的全量克隆關系。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學,未經復旦大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010122695.6/2.html,轉載請聲明來源鉆瓜專利網。





