日本早稻田大學研究團隊近日發表並開源軟體建置相依性驗證工具mkcheck2,可找出軟體建置過程中缺失或多餘的相依關係,並大幅降低驗證所需時間及對建置效能的影響,分析速度較既有方法提升約54倍,讓大型軟體專案得以將相依性驗證納入持續整合(CI)流程。
軟體建置仰賴正確的相依關係,但隨著專案規模擴大及程式碼持續變動,建置規則可能出現缺失或多餘的相依性,前者可能造成建置失敗或產生錯誤結果,後者則會引發不必要的重新建置。既有研究顯示,相依性問題占大型軟體專案建置錯誤超過一半,而建置系統維護最多可能占開發人員27%的工作時間。
mkcheck是英國劍橋大學研究人員Nandor Licker與Andrew Rice於2019年提出的開源建置相依性驗證工具,會在軟體實際建置時追蹤檔案讀寫等活動,找出程式真正使用的相依關係,再檢查建置規則中是否有缺失或多餘的相依性。mkcheck2延續這項做法,但將追蹤建置過程使用的Linux技術從ptrace改為eBPF,並導入增量分析,以降低追蹤及分析所需的時間。
兩種技術的差別在於,ptrace在追蹤系統呼叫時,需要頻繁暫停正在執行的程序,切換至監控程序取得資訊,因此會增加效能負擔;eBPF則可直接在Linux核心中執行追蹤及記錄,不必反覆於不同程序間切換。實測顯示,ptrace追蹤會讓建置時間平均增加148%,改用eBPF後僅增加0.3%。
mkcheck2的另一項改善則是導入增量分析,以縮短相依性分析時間。新版本會比較前後不同建置的相依性圖,每次程式碼提交後,只分析其中發生變化的部分,不必重新檢查所有相依關係。在300個開源專案的測試中,每次提交的平均分析時間從1,267.49秒縮短至23.56秒,速度約提升54倍。
在提高效率的同時,mkcheck2仍維持相依性錯誤的偵測能力,測試中對缺失相依性的偵測準確率為100%,多餘相依性則為92%。研究團隊認為,大幅降低建置追蹤及分析所需成本後,開發團隊可在每次程式碼變更時進行相依性驗證,讓這類檢查得以持續運用在實際軟體開發環境中。
Comments (0)
Sign in to comment