[發明專利]一種Java軟件依賴沖突問題自動化修復的方法有效
| 申請號: | 202110338522.2 | 申請日: | 2021-03-26 |
| 公開(公告)號: | CN112965913B | 公開(公告)日: | 2023-09-26 |
| 發明(設計)人: | 孫俊彥;王瑩;王修齊;于海;朱志良 | 申請(專利權)人: | 東北大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/71 |
| 代理公司: | 沈陽東大知識產權代理有限公司 21109 | 代理人: | 李在川 |
| 地址: | 110819 遼寧*** | 國省代碼: | 遼寧;21 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 java 軟件 依賴 沖突 問題 自動化 修復 方法 | ||
1.一種Java軟件依賴沖突問題自動化修復的方法,其特征在于,包括如下步驟:
步驟1:獲取當前項目的項目代碼和依賴關系;
步驟2:分析當前項目的依賴關系,得到風險依賴沖突和調用到的風險方法,并將風險依賴沖突劃分為有直接依賴的沖突和無直接依賴的沖突;
步驟3:分析風險依賴沖突,通過判斷加載的依賴版本中的方法是否滿足在當前項目中的所有調用,來尋找無風險的依賴版本;
步驟3.1:對于風險依賴沖突,分析未加載的依賴版本的方法是否滿足加載的依賴版本的方法在項目中的所有調用,若滿足,則未加載版本為無風險版本,進入步驟3.5;若不滿足,進入下一個步驟;
步驟3.2:獲取風險依賴的所有發行版本,刪除風險沖突中所存在的版本,過濾比風險沖突中版本號低的版本,依次從過濾后的版本集中取出測試版本;
步驟3.3:獲取測試版本的jar包,分析測試版本中的方法是否滿足加載的依賴版本中的方法在項目中的所有調用,若滿足,進入下一個步驟;若不滿足,測試下一個版本;
步驟3.4:分析測試版本中的方法是否包含未加載的依賴版本中的被調用到的風險方法,若滿足,即為一個無風險版本;
步驟3.5:得到的未加載版本或者測試版本即為一個無風險版本;
步驟4:設置修復策略,根據風險類型選擇不同的策略將無風險的版本加載到當前項目中;
步驟5:評估使用修復策略后的項目是否產生新的依賴沖突;
步驟6:將修復建議和修復補丁推送給開發者。
2.根據權利要求1所述的Java軟件依賴沖突問題自動化修復的方法,其特征在于,所述步驟2的過程如下:
步驟2.1:遍歷當前項目的完全依賴樹,分析得到在完全依賴樹中存在多個版本的依賴關系,定義為依賴沖突;
步驟2.2:對于分析得到的依賴沖突,對比分析加載版本和未加載版本jar包中的類和方法,如果一個未加載版本jar包中的方法在加載版本jar包中沒有對應的限定名相同的方法,則為一個風險方法,獲取這樣的方法集合,判斷集合中的方法在當前項目中是否有調用,若有調用,即為風險依賴沖突,獲取被調用到的風險方法;
步驟2.3:對于風險依賴沖突,通過依賴關系圖查看沖突的加載版本是否是當前項目直接聲明的依賴,若為當前項目直接聲明的依賴,則為有直接依賴的沖突;反之為無直接依賴的沖突。
3.根據權利要求1所述的Java軟件依賴沖突問題自動化修復的方法,其特征在于,所述修復策略包含如下4種:
1:替換當前項目的直接依賴;
2:使用dependencyManagement標簽統一到無風險的版本;
3:使用exclude標簽將當前使用的版本刪除;
4:直接聲明無風險的版本。
4.根據權利要求3所述的Java軟件依賴沖突問題自動化修復的方法,其特征在于,所述根據風險類型選擇不同的策略將無風險的版本加載到當前項目中的過程如下:
步驟4.1:在得到無風險的版本后,判斷風險依賴沖突的類型,若為有直接依賴的沖突,則使用修復策略中的策略1、2進行版本置換,生成臨時修復補丁;若為無直接依賴的沖突,則使用策略2、3、4進行版本置換,生成臨時修復補丁;
步驟4.2:對于不同置換策略對應的修復補丁,解析置換后的依賴關系,獲取當前沖突置換后的加載版本,若無風險版本正確加載,則置換成功;若無風險版本沒有正確加載,則置換失敗,刪除失敗置換策略對應的臨時修復補丁。
5.根據權利要求1所述的Java軟件依賴沖突問題自動化修復的方法,其特征在于,所述步驟5的過程如下:
步驟5.1:依次遍歷所有的臨時修復補丁,獲取由臨時修復補丁生成的依賴關系;
步驟5.2:將由補丁生成的新的依賴關系與項目原來的依賴關系進行對比,查看是否出現不同于原項目的依賴沖突,若出現,進入下一個步驟;若未出現,進入步驟5.4;
步驟5.3:對比分析加載版本和未加載版本jar包中的類和方法,如果一個未加載版本jar包中的方法在加載版本jar包中沒有對應的限定名相同的方法,則為一個風險方法,獲取這樣的方法集合,判斷集合中的方法在當前項目中是否有調用,若有調用,則修復補丁無效;若無調用,則進入下一個步驟;
步驟5.4:將評估成功的臨時修復補丁備份到用戶指定的文件夾中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東北大學,未經東北大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110338522.2/1.html,轉載請聲明來源鉆瓜專利網。





