用途:处理、分析与转换 SARIF(静态分析结果交换格式)文件,适合整合多个扫描器的输出、生成报告、比较构建差异并接入 CI/CD。
安装:pip install sarif-tools;推荐 pipx install sarif-tools;用 sarif --version 验证。若 sarif 不在 PATH,可用 python -m sarif。
主要命令:summary 输出按严重级别与工具分组的文本摘要;csv 导出问题到 CSV;html 生成 HTML 报告;word 生成 Word 报告;diff 比较新旧 SARIF 结果;copy 合并或过滤为单一文件;blame 附加 git blame 信息;codeclimate 转换为 Code Climate JSON 供 GitLab 代码质量报告;info 打印结构信息;ls 列出目录中的 SARIF 文件;trend 从带时间戳文件生成 CSV 时间序列;emacs 输出 emacs 兼容格式。
用法示例:sarif summary scan-results.sarif;sarif copy -o consolidated.sarif ./sarif-output/;sarif csv --autotrim -o findings.csv ./sarif-output/;sarif html -o report.html ./sarif-output/;sarif diff --check warning ./old-sarif/ ./new-sarif/;sarif blame -o ./blamed-sarif/ ./sarif-output/;sarif codeclimate -o codeclimate.json ./sarif-output/。命令支持 glob 模式,如 sarif summary "./output/**/devskim*.sarif"。
过滤:运行 blame 后可用 YAML 过滤文件按作者等属性 include/exclude,再用于 csv 或 copy。
CI/CD:sarif --check error summary ./sarif-output/ 或 --check warning 在存在相应级别问题时返回错误码;diff --check 可检测回归。
限制:SARIF v2.1.0 为标准格式;不同工具严重级别映射不同,部分工具可能需要预处理。trend 要求文件名含时间戳。
Python 库:from sarif import loader,可加载目录并遍历 run.get_results() 访问结果。
参考:https://github.com/microsoft/sarif-tools;https://pypi.org/project/sarif-tools/