靜態分析長久以來都有典型的工具繁多問題:安全、品質與合規掃描器各自找到有用的問題,但每一款都使用自己的輸出格式。若要把它們彙整進同一套工作流程,就得自行開發轉接器,而且會遺失脈絡。

SARIF 的巧妙之處,在於把結果定義成可攜的物件。OASIS 標準指出,SARIF 記錄是 JSON,可包含一次或多次分析執行的結果,並涵蓋規則、成品、位置、訊息、指紋與流程資料。

GitHub 讓這個格式真正可行。其程式碼掃描文件允許團隊上傳在 GitHub 之外產生的 SARIF,包括第三方工具與 CI 系統所產生的檔案,然後將結果以儲存庫警報的形式檢視。這使 SARIF 從一套結構描述,變成掃描器的發布管道。

統一的是發現,而非掃描器

JSON 讓工具與平台易於產生、驗證及儲存這種格式。

執行與工具中繼資料讓單一檔案得以保留哪一項發現是由哪個掃描器所產生。

指紋與分類有助於平台跨提交去重並追蹤警報。

GitHub 的接收機制,讓工具供應商立刻有了輸出 SARIF 的理由。

只要一種格式能涵蓋結果的完整生命週期,而不只是最初的錯誤訊息,就能統一碎片化的工具市場。

SARIF 2.1.0 於 2020 年 3 月 27 日成為 OASIS 標準。GitHub 程式碼掃描持續接受外部工具上傳的 SARIF 檔案,使這個格式成為本機掃描器、CI 系統與託管程式碼安全工作流程之間的實用橋樑。

追溯依據

參考來源

  1. Static Analysis Results Interchange Format (SARIF) Version 2.1.0 OASIS Open · docs.oasis-open.org ·
  2. Uploading a SARIF file to GitHub GitHub Docs · docs.github.com