[發(fā)明專利]基于演化歷史分析的代碼克隆危害性評估方法有效
| 申請?zhí)枺?/td> | 202010077081.0 | 申請日: | 2020-01-23 |
| 公開(公告)號: | CN111240740B | 公開(公告)日: | 2021-09-17 |
| 發(fā)明(設計)人: | 彭鑫;吳毅堅;趙文耘 | 申請(專利權(quán))人: | 復旦大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 演化 歷史 分析 代碼 克隆 危害性 評估 方法 | ||
本發(fā)明屬于軟件工程技術(shù)領(lǐng)域,具體為一種基于演化歷史分析的代碼克隆危害性評估方法。本發(fā)明方法主要針對由于一致性修改以及由此帶來的代碼缺陷而產(chǎn)生的代碼克隆危害性問題,通過代碼克隆演化歷史追溯和一致性修改過程分析產(chǎn)生代碼克隆實例一致性修改比例、一致性修改時間差等度量值并識別缺陷相關(guān)的一致性修改,在此基礎上根據(jù)一組規(guī)則確定代碼克隆類的危害性程度。
技術(shù)領(lǐng)域
本發(fā)明屬于軟件工程技術(shù)領(lǐng)域,具體涉及代碼克隆的分類及其危害性評估方法,適用于軟件維護和演化過程中的代碼克隆(重復代碼)分析。
背景技術(shù)
代碼克隆是指相似或相同的代碼(可以是代碼片段、方法、文件、模塊等不同粒度),即重復代碼。一組相似或相同的代碼克隆拷貝稱為一個克隆類,其中每一個拷貝成為一個克隆實例。代碼克隆廣泛存在于開源以及企業(yè)軟件項目中,并被廣泛認為是一種代碼壞味道(badsmell),在軟件設計質(zhì)量、代碼的一致性維護、缺陷傳播等方面都有很多不利影響。然而,代碼克隆存在很多不同類型,其產(chǎn)生也不全是因為代碼復制粘貼。例如,有些代碼克隆是由于代碼自動生成而產(chǎn)生的,而有些代碼克隆是由于通用API的共性使用模式或通用算法實現(xiàn)所產(chǎn)生的,這些代碼克隆一般沒有危害。為此,企業(yè)在面對遺留系統(tǒng)中的代碼克隆問題時,需要對各種代碼克隆進行分析和評價,確定其危害性從而為相應的重構(gòu)決策提供依據(jù)和支撐。
發(fā)明內(nèi)容
本發(fā)明的目的是為企業(yè)代碼庫提供一種基于歷史演化分析的代碼克隆危害性評估方法,為企業(yè)對各種代碼克隆進行分析和評價,確定其危害性從而為相應的重構(gòu)決策提供依據(jù)和支撐。
本發(fā)明提供的基于演化歷史分析的代碼克隆危害性評估方法,主要針對代碼克隆由于一致性修改(即多個克隆實例之間需要進行相似的代碼修改)以及由此帶來的代碼缺陷(即由于某些克隆實例遺漏所需要的代碼修改而導致缺陷)而產(chǎn)生的危害,不考慮代碼克隆對于代碼復雜度和設計結(jié)構(gòu)的影響。通過代碼克隆演化歷史追溯和一致性修改過程分析產(chǎn)生代碼克隆實例一致性修改比例、一致性修改時間差等度量值并識別缺陷相關(guān)的一致性修改,在此基礎上根據(jù)一組規(guī)則確定代碼克隆類的危害性程度。
本發(fā)明提供的基于演化歷史分析的代碼克隆危害性評估方法,具體步驟如下。
(1)代碼克隆檢測
從版本庫中檢出一個或多個目標軟件系統(tǒng)的當前最新版本快照,利用代碼克隆檢測工具檢測其中的代碼克隆,產(chǎn)生代碼克隆類及其實例。
(2)代碼克隆演化歷史追溯
針對待分析的代碼克隆類中的每一個克隆實例,基于來自版本庫的代碼提交(Commit)歷史和來自缺陷庫的缺陷報告列表,進行代碼克隆演化歷史追溯;具體流程為:
1)通過代碼提交歷史回溯找到首次引入該克隆實例的代碼提交;
2)分析從該克隆實例首次引入到最新版本快照之間的代碼提交歷史,識別對該克隆實例進行了修改的變更操作,收集每一個變更操作的修改時間(即代碼提交時間)、修改類型(增加、刪除或修改代碼)、修改位置(修改在克隆代碼中的相對位置)、修改內(nèi)容(增加、刪除或修改的內(nèi)容)等信息,形成該克隆實例的變更操作集合;
3)根據(jù)代碼提交與缺陷報告的關(guān)聯(lián)關(guān)系(如代碼提交消息中的缺陷報告ID)確定該克隆實例的每一個變更操作是否屬于缺陷修復操作,即該變更操作所對應的代碼提交目的是否是缺陷修復。
(3)一致性修改過程分析;
針對待分析的代碼克隆類的每兩個實例構(gòu)成的克隆實例對,以較晚引入的克隆實例的引入時間為起點,以當前最新版本為終點,基于這段時間之內(nèi)它們的代碼克隆演化歷史(即只考慮這段時間之內(nèi)的克隆實例變更操作),進行一致性修改過程分析;具體流程為:
1)對來自這兩個克隆實例的變更操作兩兩進行匹配,如果兩個修改操作的修改類型、修改位置、修改內(nèi)容都相同,那么認為這兩個變更操作屬于一致性修改并將它們的修改時間之差作為修改時間差;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于復旦大學,未經(jīng)復旦大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010077081.0/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種軟件體系結(jié)構(gòu)并行演化沖突的檢測方法
- 基于Agent的動態(tài)演化系統(tǒng)及方法
- 粒子刻蝕或沉積演化仿真方法、裝置和計算機可讀介質(zhì)
- 一種基于Petri網(wǎng)的Web服務組合演化方法
- 一種基于演化切片的演化影響集預測方法
- 一種挖掘重疊社區(qū)動態(tài)演化關(guān)聯(lián)規(guī)則的方法
- 一種智能電網(wǎng)發(fā)電側(cè)微分演化博弈競價方法
- 基于混合結(jié)構(gòu)的指揮控制超網(wǎng)絡動態(tài)演化模型構(gòu)建方法
- 一種基于頭腦風暴優(yōu)化算法求解演化博弈問題的方法
- 基于演化變點的社會網(wǎng)絡演化分析方法





