SARIF 2.1.0 發現項目匯出

框架有多個發現項目產生器 —— action-lint、密鑰掃描、WCAG/a11y 稽核、guardrail —— 但缺乏 共通匯出,因此結果無法進入 GitHub / Azure DevOps 的**程式碼掃描**(持久、去重、定位到行 的警示儲存)。SARIF 2.1.0(OASIS)正是該交換格式。

to_sarif 由一份正規化*發現項目*清單({rule_id, level, message, file?, line?})建 立 SARIF 文件,並為既有 lint / audit 形狀提供轉接器,加上穩定的 partialFingerprints 讓同一問題能跨執行去重。純標準函式庫(json + hashlib);不匯入 PySide6

無頭 API

from je_auto_control import (
    make_finding, to_sarif, write_sarif, from_lint_issues,
    from_audit_findings)

findings = [
    make_finding("AC_SHELL", "shell command not allow-listed",
                 level="error", file="flow.json", line=12),
    *from_lint_issues(lint_issues, file="flow.json"),
    *from_audit_findings(wcag_report["findings"]),
]
write_sarif(findings, "results.sarif", tool_name="AutoControl")
# 以 GitHub「upload-sarif」action 上傳 results.sarif

make_finding 建立單一正規化發現項目;``from_lint_issues``(對映 index/severity/code/message)與 from_audit_findings``(對映 ``sc/criterion/kind/severity)轉接既有產生器;``to_sarif`` 自動衍生規則目錄並為每個結 果附上穩定指紋;``write_sarif`` 序列化成檔案。嚴重度字串對映為 SARIF 的 error / warning / note

執行器指令

AC_export_sarif 接受 findings``(清單或 JSON 字串)以及選用的 ``pathtool_name,回傳 {sarif, path?}。相同操作亦提供為 MCP 工具 ac_export_sarif,以 及 Script Builder 中 Report 分類下的指令。