[發(fā)明專利]基于GitHub自動化檢測Maven項目中依賴沖突問題的方法有效
| 申請?zhí)枺?/td> | 202110043582.1 | 申請日: | 2021-01-13 |
| 公開(公告)號: | CN112799937B | 公開(公告)日: | 2023-09-26 |
| 發(fā)明(設(shè)計)人: | 王修齊;王瑩;孫俊彥;于海;朱志良 | 申請(專利權(quán))人: | 東北大學(xué) |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 沈陽東大知識產(chǎn)權(quán)代理有限公司 21109 | 代理人: | 李在川 |
| 地址: | 110819 遼寧*** | 國省代碼: | 遼寧;21 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 github 自動化 檢測 maven 項目 依賴 沖突 問題 方法 | ||
本發(fā)明公開一種基于GitHub自動化檢測Maven項目中依賴沖突問題的方法,該方法根據(jù)造成依賴沖突問題的不同原因?qū)⒁蕾嚊_突問題分為了三種不同類型的場景,本發(fā)明可以自動化檢測GitHub用戶的由Maven管理的Java程序中是否存在上述三種不同類型場景的依賴沖突問題,檢查完畢后會在issue頁面顯示檢查結(jié)果,若發(fā)現(xiàn)有害沖突還會給出詳細(xì)的測試報告以及問題節(jié)點的調(diào)用信息。本發(fā)明的方法還實時監(jiān)控用戶更新代碼時是否引入了新的依賴沖突問題。使用本發(fā)明可以節(jié)省用戶自身查找依賴沖突問題的時間,極大地降低了程序中出現(xiàn)xx?no?found?bug的風(fēng)險,有效地提高了程序的有效性。
技術(shù)領(lǐng)域
本發(fā)明涉及軟件可靠性檢測技術(shù)領(lǐng)域,尤其涉及一種基于GitHub自動化檢測Maven項目中依賴沖突問題的方法。
背景技術(shù)
軟件開發(fā)過程中經(jīng)常會復(fù)用第三方開源項目從而減少開發(fā)成本。Maven,Apache開發(fā)維護的Java項目依賴管理工具。由Maven管理的Java項目可以通過xml形式的pom文件引入并管理第三方依賴組件。然而,由于同一個第三方庫存在多個不同的版本以及Maven依賴組件加載的仲裁機制,經(jīng)常會出現(xiàn)依賴沖突問題,產(chǎn)生軟件缺陷,降低軟件質(zhì)量。在測試用例不夠完善,測試不夠充分的情況下,這種軟件缺陷通常會在程序運行時產(chǎn)生xx?no?foundbu?g。Bug的主要類型包括java.lang.NoSuchMethodError、java.lang.NoSuchMethodException和java.lang.ClassNotFoundException。
Java語言的流行也帶來了大量的第三方開源庫的發(fā)展,Maven倉庫中涵蓋了超過一百萬個Java項目,其中包括了超過五百萬個不同版本的Jar,這些不同的Jar提供了多種功能供開發(fā)者使用。此外,當(dāng)宿主項目依賴于某一個版本的Jar時,還會引入該Jar對應(yīng)的依賴組件,平均一個由Maven管理的Java項目會引入48個直接依賴和間接依賴。當(dāng)一個項目引入了同一個開源項目的不同版本時,就有可能出現(xiàn)依賴沖突問題,產(chǎn)生軟件缺陷。然而,Maven對這種依賴沖突問題并沒有提供理想的解決方案,只能粗粒度的提示有問題的Jar。
發(fā)明內(nèi)容
針對上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于GitHub自動化檢測Maven項目中依賴沖突問題的方法。GitHub是通過Git進行版本控制的軟件源代碼托管服務(wù)平臺,是最流行的Git訪問站點。除了允許個人和組織創(chuàng)建和訪問保管中的代碼以外,它也提供了一些方便社會化共同軟件開發(fā)的功能,即一般的社區(qū)功能,包括允許用戶追蹤其他用戶、組織、軟件庫的動態(tài),對軟件代碼的改動和bug提出評論等。目前GitHub擁有超過4000萬用戶和超過1.9億的儲存庫,其中包含了大量由Maven管理的Java項目。
為解決上述技術(shù)問題,本發(fā)明所采取的技術(shù)方案是:一種基于GitHub自動化檢測Maven項目中依賴沖突問題的方法,包括如下步驟:
步驟1:用戶訂閱GitHub?Bot,并選擇對應(yīng)的儲存庫;
步驟2:獲取Maven項目中所有的開源依賴組件,所有開源依賴組件的坐標(biāo)使用組標(biāo)簽GroupId,構(gòu)建標(biāo)簽ArtifactId和版本Version三個字段進行唯一標(biāo)識;
步驟3:將依賴沖突問題分為三種不同類型的場景,分別為:
場景一:包粒度的沖突,即同一Jar的不同版本導(dǎo)致的依賴沖突問題;
場景二:類粒度的沖突,即不同Jar包含了完全限定名相同的類;
場景三:宿主項目和第三方Jar中包含沖突的類文件;
步驟4:識別Maven項目中是否包含場景一的依賴沖突問題,過程如下:
步驟4.1:遍歷所有依賴沖突,識別出當(dāng)前項目使用的依賴組件UsedJar,以及未使用的依賴組件集合NotUsedJarSet;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于東北大學(xué),未經(jīng)東北大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110043582.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種基于社會化編程網(wǎng)站的領(lǐng)域?qū)<野l(fā)現(xiàn)方法
- 基于動態(tài)網(wǎng)絡(luò)圖挖掘的Github開源代碼庫推薦系統(tǒng)
- 基于情感因素對項目進展的協(xié)方差相關(guān)性提取方法
- 基于github的逃避CC檢測的方法和裝置
- 一種面向GitHub與Travis CI的完整持續(xù)集成數(shù)據(jù)收集方法
- 一種構(gòu)建本地項目的方法、終端和計算機可讀存儲介質(zhì)
- 一種面向GitHub大規(guī)模開源代碼的快速代碼文件溯源方法和裝置
- 一種基于Github的軟件缺陷檢測模型建立、檢測方法及系統(tǒng)
- 發(fā)布GitHub Issues的方法、系統(tǒng)、電子設(shè)備和計算機可讀存儲介質(zhì)
- 一種基于聯(lián)合嵌入模型的代碼推薦方法
- 自動化設(shè)備和自動化系統(tǒng)
- 一種基于流程驅(qū)動的測試自動化方法以及測試自動化系統(tǒng)
- 用于工業(yè)自動化設(shè)備認(rèn)識的系統(tǒng)和方法
- 實現(xiàn)過程自動化服務(wù)的標(biāo)準(zhǔn)化設(shè)計方法學(xué)的自動化系統(tǒng)
- 一種日產(chǎn)50萬安時勻漿自動化系統(tǒng)
- 一種自動化肥料生產(chǎn)系統(tǒng)
- 一種電氣自動化設(shè)備自動檢測系統(tǒng)及檢測方法
- 用于自動化應(yīng)用的抽象層
- 一種基于虛擬化架構(gòu)的自動化系統(tǒng)功能驗證方法
- 自動化測試框架自動測試的實現(xiàn)技術(shù)





