[發(fā)明專利]基于演化歷史分析的代碼克隆危害性評估方法有效
| 申請?zhí)枺?/td> | 202010077081.0 | 申請日: | 2020-01-23 |
| 公開(公告)號: | CN111240740B | 公開(公告)日: | 2021-09-17 |
| 發(fā)明(設計)人: | 彭鑫;吳毅堅;趙文耘 | 申請(專利權)人: | 復旦大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 演化 歷史 分析 代碼 克隆 危害性 評估 方法 | ||
1.基于演化歷史分析的代碼克隆危害性評估方法,主要針對代碼克隆由于一致性修改以及由此帶來的代碼缺陷而產(chǎn)生的危害,一致性修改是指多個克隆實例之間需要進行相似的代碼修改,代碼缺陷是指由于某些克隆實例遺漏所需要的代碼修改而導致缺陷;其特征在于,危害性評估的具體步驟為:
(1)代碼克隆檢測;
從版本庫中檢出一個或多個目標軟件系統(tǒng)的當前最新版本快照,利用代碼克隆檢測工具檢測其中的代碼克隆,產(chǎn)生代碼克隆類及其實例;
(2)代碼克隆演化歷史追溯;
針對待分析的代碼克隆類中的每一個克隆實例,基于來自版本庫的代碼提交歷史和來自缺陷庫的缺陷報告列表,進行代碼克隆演化歷史追溯;
(3)一致性修改過程分析;
針對待分析的代碼克隆類的每兩個實例構成的克隆實例對,以較晚引入的克隆實例的引入時間為起點,以當前最新版本為終點,基于這段時間之內(nèi)它們的代碼克隆演化歷史,即只考慮這段時間之內(nèi)的克隆實例變更操作,進行一致性修改過程分析:
(4)代碼克隆危害分析;
根據(jù)待分析的代碼克隆類中所有的克隆實例對的一致性修改度量,進行克隆危害分析;
按照以下方式計算克隆實例對的一致性修改度量:設這兩個克隆實例的變更操作集合分別為CS1和CS2,其中一致性修改對的集合為CC,某個一致性修改對cc的時間差為Δcc,那么這兩個克隆實例的修改操作數(shù)為|CS1|+|CS2|,一致性修改比例為2*|CC|/(|CS1|+|CS2|),一致性修改時間差為CC中所有cc的Δcc的中位值。
2.根據(jù)權利要求1所述的方法,其特征在于,步驟(2)中所述進行代碼克隆演化歷史追溯的流程為:
1)通過代碼提交歷史回溯找到首次引入該克隆實例的代碼提交;
2)分析從該克隆實例首次引入到最新版本快照之間的代碼提交歷史,識別對該克隆實例進行了修改的變更操作,收集每一個變更操作的修改時間、修改類型、修改位置、修改內(nèi)容信息,形成該克隆實例的變更操作集合;
3)根據(jù)代碼提交與缺陷報告的關聯(lián)關系確定該克隆實例的每一個變更操作是否屬于缺陷修復操作,即該變更操作所對應的代碼提交目的是否是缺陷修復。
3.根據(jù)權利要求2所述的方法,其特征在于,步驟(3)中所述進行一致性修改過程分析的流程為:
1)對來自這兩個克隆實例的變更操作兩兩進行匹配,如果兩個修改操作的修改類型、修改位置、修改內(nèi)容都相同,那么認為這兩個變更操作屬于一致性修改并將它們的修改時間之差作為修改時間差;
2)對于所發(fā)現(xiàn)的每一對一致性修改,如果其中有一個變更操作屬于缺陷修復操作,那么將這一對一致性修改標記為缺陷相關的一致性修改;
3)按照以下方式計算這兩個克隆實例的一致性修改度量:設這兩個克隆實例的變更操作集合分別為CS1和CS2,其中一致性修改對的集合為CC,某個一致性修改對cc的時間差為Δcc,那么這兩個克隆實例的修改操作數(shù)為|CS1|+|CS2|,一致性修改比例為2*|CC|/(|CS1|+|CS2|),一致性修改時間差為CC中所有cc的Δcc的中位值。
4.根據(jù)權利要求3所述的方法,其特征在于,步驟(4)中所述進行克隆危害分析的規(guī)則為:
1)如果所有克隆實例對的修改操作數(shù)為0,那么認為該代碼克隆類穩(wěn)定不變,因此無害;
2)如果所有克隆實例對的一致性修改比例為0,那么認為該代碼克隆類的各個實例獨立演化、無需保持一致性修改,因此無害;
3)如果不屬于以上兩種情況,那么進一步根據(jù)以下規(guī)則進行克隆危害分析:
如果同時滿足所有克隆實例對的平均一致性修改比例小于給定的閾值Threshold#ccratio,平均一致性修改時間差小于給定的閾值Threshold#deltaTime,沒有發(fā)生過缺陷相關的一致性修改這三個條件,那么認為該代碼克隆類需要少量的一致性維護,因此具有較低的危害性;
如果沒有發(fā)生過缺陷相關的一致性修改,并且所有克隆實例對的平均一致性修改比例大于等于給定的閾值Threshold#ccratio或者平均一致性修改時間差大于等于給定的閾值Threshold#deltaTime,那么認為該代碼克隆類需要較多的一致性修改或保持一致性演化難度較高,因此具有中等的危害性;
如果發(fā)生過缺陷相關的一致性修改,那么該代碼克隆類危害度較高。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學,未經(jīng)復旦大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010077081.0/1.html,轉載請聲明來源鉆瓜專利網(wǎng)。





