本網站內容使用人工智慧(AI)或機器翻譯技術翻譯,可能存在錯誤。

Skip to content
Systems

NPM 中語義版本控制的大規模分析

Author

唐納德·平克尼(東北大學)、費德里科·卡薩諾(東北大學)、阿瓊·古哈(東北大學與 Roblox),以及喬納森·貝爾(東北大學)

Venue

2023年軟體儲存庫研討會(MSR)

Abstract

NPM 套件儲存庫包含超過兩百萬個套件,每週處理數百億次的下載量。幾乎每個 JavaScript 應用程式都會使用 NPM 套件管理器,從 NPM 儲存庫安裝套件。NPM 仰賴「語意版本控制」(semver)機制來維持健康的生態系統,在此機制下,錯誤修正能盡快且可靠地傳遞給下游套件,而會導致相容性問題的變更則需要下游套件維護者進行手動干預。 為了了解開發者如何運用 semver,我們建立了一個包含 NPM 上每個套件所有版本的資料集,並分析更新在整個生態系統中的流動情況。我們為 NPM 建置了一個「時間旅行」依賴項解析器,藉此能精確判定在不同時間點,每個依賴項會被解析為哪些版本。我們將分析進行區隔,以便針對與安全性相關的更新(即引入或修補漏洞的更新)進行直接分析,並與生態系統的其他部分進行比較。 我們發現,當開發者正確使用 SemVer 時,在大多數情況下(90.09%),諸如安全修補程式等關鍵更新能相當迅速地流向下游依賴項;但由於開發者對 SemVer 版本約束與版本號遞增規則的運用並不完美,這種情況並非總是發生。我們的研究結果對開發者和研究人員皆具啟發意義。我們已將相關基礎架構與資料集以開源授權形式公開釋出。