[發明專利]基于GitHub自動化檢測Maven項目中依賴沖突問題的方法有效
| 申請號: | 202110043582.1 | 申請日: | 2021-01-13 |
| 公開(公告)號: | CN112799937B | 公開(公告)日: | 2023-09-26 |
| 發明(設計)人: | 王修齊;王瑩;孫俊彥;于海;朱志良 | 申請(專利權)人: | 東北大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 沈陽東大知識產權代理有限公司 21109 | 代理人: | 李在川 |
| 地址: | 110819 遼寧*** | 國省代碼: | 遼寧;21 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 github 自動化 檢測 maven 項目 依賴 沖突 問題 方法 | ||
1.一種基于GitHub自動化檢測Maven項目中依賴沖突問題的方法,其特征在于,包括如下步驟:
步驟1:用戶訂閱GitHub?Bot,并選擇對應的儲存庫;
步驟2:獲取Maven項目中所有的開源依賴組件,所有開源依賴組件的坐標使用組標簽GroupId,構建標簽ArtifactId和版本Version三個字段進行唯一標識;
步驟3:將依賴沖突問題分為三種不同類型的場景,分別為:
場景一:包粒度的沖突,即同一Jar的不同版本導致的依賴沖突問題;
場景二:類粒度的沖突,即不同Jar包含了完全限定名相同的類;
場景三:宿主項目和第三方Jar中包含沖突的類文件;
步驟4:識別Maven項目中是否包含場景一的依賴沖突問題;
步驟5:識別Maven項目中是否包含場景二的依賴沖突問題;
步驟6:識別Maven項目中是否包含場景三的依賴沖突問題;
步驟7:以GitHub?issue的形式將檢測結果反饋給用戶;
步驟8:當用戶對儲存庫代碼進行更新時,Bot自動檢測是否引入了新的依賴沖突問題,并給出說明;
步驟9:用戶根據需要選擇增加儲存庫,或者不再訂閱GitHub?Bot。
2.根據權利要求1所述的基于GitHub自動化檢測Maven項目中依賴沖突問題的方法,其特征在于,所述步驟4的過程如下:
步驟4.1:遍歷所有依賴沖突,識別出當前項目使用的依賴組件UsedJar,以及未使用的依賴組件集合NotUsedJarSet;
步驟4.2:獲得當前項目使用的依賴組件UsedJar中的類集合UsedJarClassSet以及方法集合;獲得未使用的依賴組件集合NotUsedJarSet中的類集合NotUsedJarClassSet以及方法集合;通過比較UsedJarClassSet和NotUsedJarClassSet中方法的差異以及判斷是否被宿主項目調用得到風險方法集合riskMethods;
步驟4.3:若風險方法集合riskMethods為空則表示這是一個無害的依賴沖突,若風險方法集合riskMethods不為空則表示這是一個有害的依賴沖突,需要引起開發者的重視。
3.根據權利要求1所述的基于GitHub自動化檢測Maven項目中依賴沖突問題的方法,其特征在于,步驟4.2中采用soot對依賴組件UsedJar和未使用的依賴組件集合NotUsedJarSet進行解析,過程如下:
步驟4.2.1:在soot分析階段,使用剪枝策略來加快分析速度;
步驟4.2.2:項目初始化時,建立全局依賴樹,檢測每一個依賴節點是否在聲明時使用exclusion強制排除了某些節點,將依賴樹檢測結果存入字典中;其中,鍵是被排除的結點,值是排除它的結點的集合;
步驟4.2.3:分析沖突時,首先向soot中加載當前依賴沖突節點調用路徑上的所有父節點;其次,掃描字典,若字典的鍵中包含當前沖突調用路徑上的結點,則將排除它的結點的調用路徑也加入進來;
步驟4.2.4:通過以上的剪枝優化策略,可以有效的加快程序運行速度,減少程序運行時所需JVM內存的大小。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東北大學,未經東北大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110043582.1/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:餐盤收洗一體機
- 下一篇:一種高耐候鋼結構水性丙烯酸樹脂的制備方法





