用 SARIF 将检查结果接入代码扫描
文章拆解 SARIF 的运行记录、规则、结果、位置和指纹等字段,说明静态检查结果如何进入代码扫描平台。结合 mcpscore 的输出实现,展示检查工具复用现有结果管理界面的方式。
原文暂未完整获取,基于公开信息的快读
mcpscore 1.14.0 支持将审计中未通过的规则导出为 SARIF,让检查结果进入 GitHub code scanning 等已有平台。作者借此解释:检查工具负责发现问题,平台负责保存和追踪问题。现有节选已给出输出方式、告警去重和部分信息处理规则,但文章末尾仍不完整。
目前能确认什么
SARIF(Static Analysis Results Format)是描述静态分析结果的 OASIS 标准,采用 JSON 格式。文件包含运行记录,每次运行列出工具、规则和结果;结果关联规则、级别、消息、位置及用于跨运行识别问题的指纹。
它提供的是工具与平台之间的共同格式。CodeQL 可以输出,ESLint、Semgrep 有对应 formatter,GitHub code scanning 等平台可以读取。
mcpscore 的 --sarif FILE 输出 SARIF 2.1.0,每条失败规则对应一条结果,通过和跳过的规则不写入。JSON 报告仍保留完整运行记录。文件在阈值检查前生成,因此即使 --fail-under 导致任务失败,报告也已落盘。
作者还说明,mcpscore 检查的是运行中的服务器,位置可以用代表目标的仓库相对路径表达。这样的告警能进入 Security 页面,但没有源码行可供标注。
生成 SARIF 文件,不等于自动完成上传,也不等于自动阻止 PR 合并。
我的判断
自研检查工具可以优先考虑复用扫描平台的告警管理能力,把开发精力放在规则质量上。这里最关键的是指纹:mcpscore 用规则 ID 和目标身份生成指纹,让同一服务器的重复检查关联到同一告警。
CI 接入还要核对失败后的执行路径。报告提前生成,只解决了文件是否存在;扫描失败后上传步骤能否继续,需要工作流明确保证。
信息暴露也有具体边界。节选说输出会去掉 URL 的认证信息、查询参数和片段,并省略命令参数,但仍保留主机、端口和路径。接入前应检查这些内容是否适合向告警可见者公开。完整的上传配置、平台权限要求及末尾未展示的说明,现有材料还不能确认。