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

Skip to content
Systems

透過 Max-SMT 實現靈活且最佳化的依賴性管理

Author

唐納德·平克尼(東北大學)、費德里科·卡薩諾(東北大學)、阿瓊·古哈、喬納森·貝爾(東北大學)、馬西米利安諾·庫爾波(獨立研究員)、托德·甘布林(勞倫斯利弗莫爾國家實驗室)

Venue

IEEE/ACM 國際軟體工程會議 (ICSE),2023

Abstract

諸如 NPM 之類的套件管理工具已成為軟體開發不可或缺的工具。NPM 儲存庫收錄了超過 200 萬個套件,每週處理的下載量超過 430 億次。遺憾的是,NPM 的依賴性解析器存在若干缺點。1) NPM 採用貪婪策略,往往無法安裝依賴項的最新版本; 2) NPM 的演算法會導致依賴項重複與程式碼臃腫,這對需要盡量縮小程式碼大小的網頁應用程式尤其不利;3) NPM 的漏洞修復演算法同樣具有貪婪性,甚至可能引入新的漏洞;以及 4) NPM 重複依賴項的能力可能破壞有狀態框架,且需要極多謹慎處理才能繞過此問題。 儘管現有工具試圖解決這些問題,但它們要麼穩定性不足、要麼依賴於對依賴關係樹的事後修改、要麼無法保證最優性,或是缺乏可組合性。我們提出 Pacsolve,這是一個用於依賴關係求解的統一框架與實作,允許自訂約束條件與優化目標。我們利用 Pacsolve 建構了 Maxnpm,這是一個可直接替代 NPM 的完整解決方案,賦予開發者在安裝依賴項時結合多重目標的能力。 我們透過 NPM 生態系統中大量套件樣本對 Maxnpm 進行評估,結果顯示它能夠:1) 在 33% 的案例中,比 NPM 的稽核工具減少更多依賴項中的漏洞;2) 在 14% 的案例中,選擇比 NPM 更新版的依賴項;以及 3) 在 21% 的案例中,選擇比 NPM 更少的依賴項。我們所有的程式碼與資料均為開源且可供使用。