GitHub Actions 集成第三方代码审计工具的核心是使分析结果被 GitHub 正确识别和展示,主要通过 SARIF 标准上传(如 upload-sarif action)或 reviewdog 做 PR 内联评论两类路径实现,AI 工具则需手动调用 API 发表评论。

GitHub Actions 集成第三方代码审计工具,核心是把工具的分析结果“送进 GitHub 的代码扫描系统”或“直接反馈到 Pull Request”,关键不在于工具本身多强大,而在于结果能否被 GitHub 正确识别和展示。常见路径有两类:走 SARIF 标准上传(推荐用于安全/静态分析类工具),或用 reviewdog 类工具做 PR 评论式反馈(适合风格检查、基础缺陷发现)。
用 upload-sarif action 上传 SAST 工具结果
这是官方推荐方式,适用于 SonarQube、Semgrep、Bandit、Checkmarx 等支持导出 SARIF 格式的工具。
- 确保你的审计工具能生成符合 SARIF 2.1.0 规范的 JSON 文件(多数主流工具已支持,启用时加
--format=sarif或类似参数) - 在工作流中先运行审计命令,再用
upload-sarif动作上传结果文件 - 示例片段:
- name: Run Semgrep
run: semgrep --config=policy --output=semgrep-results.sarif --format=sarif .
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: semgrep-results.sarif
token: ${{ secrets.GITHUB_TOKEN }}
上传后,结果会自动出现在仓库的 Security → Code scanning alerts 页面,并关联到对应代码行。
GitHub 智能代码审查与 CI/CD 自动化工作流。收到 PR 或代码提交时,自动进行 AI 代码审查(bug/安全/逻辑),并根据审查结果智能生成或推荐 GitHub Actions 工作流。触发词:代码审查、review PR、生成 CI/CD、GitHub Actions。
用 reviewdog 做 PR 内联评论
适合 golint、shellcheck、eslint、pylint 等轻量级检查工具,结果直接以评论形式出现在 PR 的 diff 区域,开发者无需跳转。
- reviewdog 不直接执行分析,而是“接收其他工具的输出”,再格式化为 GitHub 评论
- 必须配合具体分析命令使用,例如:
eslint . --format=unix | reviewdog -f=eslint -reporter=github-pr-review - 注意设置
REVIEWDOG_GITHUB_API_TOKEN(通常用${{ secrets.GITHUB_TOKEN }}即可) - 它默认只检查变更部分(diff),避免噪音,也节省资源
用 AI 工具做语义级审查(如 Claude Code、Taotoken)
这类工具不输出结构化报告,但能理解上下文并给出改进建议,适合补充传统 SAST 的盲区。
- 通常通过
curl或专用 Action(如claude-code-action)调用 API - 需手动提取 diff(
git diff)、构造 prompt、解析返回内容 - 再用
actions/github-script调用 GitHub REST API 发表 PR 评论 - 注意控制调用频率和 token 成本,建议限制分析范围(如只查
src/**)
通用注意事项
无论哪种方式,都要注意三点:
-
权限要开对:SARIF 上传需要
security-events: write;PR 评论需要pull-requests: write——GITHUB_TOKEN默认具备,无需额外配置 -
触发时机要合理:安全扫描建议定时(
schedule)+ PR 触发;风格检查建议只在 PR 时运行,避免干扰主干 -
失败策略要明确:是否阻断合并?建议将严重问题设为
fail-on-error,警告类问题仅提示

















