简介
reviewdog 可以读取任意 Lint/静态分析输出,并把问题精确贴到 PR diff 上(Review 评论或 Checks);让质量门槛自动化落地,不再靠复制粘贴日志,并方便多仓库统一规则。
- 适合谁: 同时跑多个 linter、希望把反馈“只对本次改动生效”的代码仓库
- 可搭配: GitHub/GitLab CI;支持多种 linter 输出格式(checkstyle/eslint/golangci-lint 等)
- 准备时间: 10–20 分钟
实战建议
- 量化门槛:只对本次 diff 新增问题失败(diff-only 反馈)。
- 建议:先用
-reporter=local跑通,再接入 PR 权限与 Token。
常用打法:先做“只看 diff 新增问题”
当仓库历史遗留问题很多时,最快的上线方式是:只对 PR 引入的新问题发评论,避免“一上来就刷屏”。
1)先选一个 linter,确保输出里有 file/line/col。
2)用 reviewdog 做 diff 过滤:
<你的_linter_命令> | reviewdog -f=golint -reporter=github-pr-review -filter-mode=diff_context3)逐步收紧:
- 先用
github-pr-review(体验更友好), - 需要强制合并门槛时再切到
github-check(更像 gate)。
常用打法:把多个 linter 统一到一个“review 面板”
CI 同时跑格式化、安全、依赖等工具时,关键是让 PR 结果可读:
- reporter 统一(Checks 或 Review 选一个),
- 严重级别映射统一,
- 每条消息第一句话直接告诉“改什么”。
排错建议
- 完全没输出:先确认确实在 PR 上下文中跑,并且 token/权限齐全。
- 太吵:启用 diff 过滤,或按路径白名单/黑名单收敛。
FAQ
一定要 GitHub Actions 吗? 答:不一定。reviewdog 支持多种 CI;想发 PR 评论时关键是要拿到 PR diff 上下文。
可以本地跑吗?
答:可以。先用 -reporter=local 验证解析与输出格式,再接入 CI。
如何避免把历史问题全刷出来?
答:用 diff 过滤(-filter-mode=diff_context),只对本次改动新增问题提示。