[發明專利]一種基于相似度分析的源代碼版本演化注釋復用方法有效
| 申請號: | 201611204086.5 | 申請日: | 2016-12-23 |
| 公開(公告)號: | CN106843840B | 公開(公告)日: | 2020-04-17 |
| 發明(設計)人: | 李斌;賈荻;陳晨;余海;賀也平 | 申請(專利權)人: | 中國科學院軟件研究所 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F40/30 |
| 代理公司: | 北京君尚知識產權代理有限公司 11200 | 代理人: | 司立彬 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 相似 分析 源代碼 版本 演化 注釋 方法 | ||
本發明公開了一種基于相似度分析的源代碼版本演化注釋復用方法。本方法為:1)查找目標源代碼的新版本,生成該新版本的標識符信息并寫入復用庫;2)對該目標源代碼與該新版本進行文本相似度分析,將該目標源代碼中與該新版本相同的代碼片段的標識符對應的注釋寫入復用庫中對應注釋字段,剩余代碼片段的標識符寫入一中間文件;3)根據該中間文件中每一標識符及其對應代碼片段生成一功能相似度信息;4)對于該中間文件中的標識符,根據該目標源代碼中該標識符對應的代碼片段與該新版本該標識符對應的代碼片段生成該標識符的克隆對;5)將功能相似度大于設定閾值的克隆對對應的標識符在該目標源代碼中的注釋寫入該復用庫中該標識符的注釋字段。
技術領域
本發明屬于軟件技術領域,涉及一種實用的基于相似度分析的源代碼版本演化注釋復用方法。
背景技術
代碼克隆檢測技術是指在軟件系統的源代碼中找出具有高相似性的代碼段,它是克隆研究領域的基礎性工作,為后期更深入的探究提供基礎數據。其中克隆代碼是指程序員為了提高開發效率經常對軟件系統的源代碼進行拷貝粘貼及修改活動,這種重用機制通常會導致在源代碼庫中出現很多相同或相似的代碼段。
代碼克隆檢測包括四個級別:基于文本的檢測,該方法是在軟件系統的源代碼上直接進行比較處理,屬于純文本比較技術。基于詞法(token)的檢測,首先使用詞法分析工具將所有源代碼的每一行轉換成一個token序列,并將所有序列連接成一個token串;接著掃描這個token以查找相似的token子序列,然后報告這些相似子串所對應的源代碼為克隆。基于語法的檢測,根據相似的代碼段應該也有相似的句法結構而設計的程序被解析成一棵語法樹,其中相似的子樹所對應的源代碼段就是克隆代碼。基于語義的檢測,主要以PDG(ProcedureDependence Graph,程序依賴圖)方法為代表,即給定一個程序,根據程序語句之間的數據流和控制依賴關系建立一個PDG的集合,在此集合中的同構子圖所對應的代碼段為克隆代碼。基于文本的方法不需考慮程序句法的正確性,時空復雜度最低。基于詞法(token)的方法擁有基于文本方法的優點,且獨立于源代碼,但誤檢率較高。基于語法的檢測方法能有效地檢測更多類型的克隆對,但由于需將源代碼解析成AST(Abstract SyntaxTree,抽象語法樹)后再查找相似子樹,所以時空復雜度偏高。基于語義的檢測技術從更高層面去分析獲得程序的語義,該技術能檢測到一些被打亂順序但語義相同的代碼段,但建立PDG和尋找同構子圖代價高昂。
源代碼注釋是為了提高源碼可讀性而進行的自然語言對應性文本描述,主要目的為了輔助程序員進行代碼理解,提高軟件系統的可維護性。源代碼注釋產生的途徑多種多樣,包括最基本的程序員手工編寫、基于軟件文檔的工具自動生成、基于開放資源(如gitlog、開源社區和問答系統等)的自動提取和生成等,如果存在多個定制版本或演化版本,則注釋可以來源于舊版本的復用數據。
本發明涉及的代碼克隆檢測技術主要包括文本相似度和功能相似度兩部分。基于文本相似度分析可以處理大部分可復用的注釋數據,文本相似度分析無法處理的部分可選擇性的交由功能相似度分析部分精細化處理,從而最大限度的復用原有注釋數據。所述方法的文本相似度分析對應克隆檢測技術中基于文本的檢測方法,功能相似度分析可對應克隆檢測技術中基于語法的檢測方法或代價更高的基于語義的檢測方法。
發明內容
針對現有技術中存在的技術問題,本發明的目的在于提供一種基于相似度分析的源代碼版本演化注釋復用方法。通過所述方法可以高效的對開源軟件的注釋版本、定制版本等與主線版本分開的演化版本進行注釋數據的復用,避免對全部代碼進行手工注釋工作,有效支撐其后續開發中對軟件源代碼的可維護性和可理解性。
本發明的基于相似度分析的源代碼版本演化注釋復用方法,包括三部分,如圖1所示,第一部分是復用版本初始化,第二部分是文本相似度分析,第三部分是功能相似度分析,具體描述如下:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院軟件研究所,未經中國科學院軟件研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611204086.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:爆震傳感器
- 下一篇:使用在抽煙狀態下的過濾嘴





