Reviewdog 是一个自动化代码审查工具,它能够轻松集成到持续集成(CI)流程中,与各种代码分析工具协同工作,并将审查结果以评论的形式发布到代码托管服务上,从而帮助开发团队保持代码库的健康。
核心功能
Reviewdog 的设计理念是提供一个灵活且通用的平台,以实现自动化代码审查。其主要功能包括:
- 自动化代码审查:Reviewdog 能够自动运行各种代码分析工具(如 Linter、Formatter 等),并根据这些工具的输出结果生成审查评论。
- 与各种 Linter 工具集成:它不绑定特定的编程语言或代码分析工具,通过支持多种输入格式,可以与几乎任何 Linter 或静态分析工具集成。
- 支持多种代码托管服务:Reviewdog 可以将审查评论发布到主流的代码托管平台,包括 GitHub、GitLab 和 Bitbucket 等,通常以 Pull Request 或 Merge Request 的评论形式呈现。
- 代码建议功能:除了报告问题,Reviewdog 还支持代码建议功能。如果集成的诊断工具能够提供代码修改建议,Reviewdog 可以将其作为可应用的补丁发布,简化代码修复过程。
- 本地运行支持:除了在 CI 环境中运行,Reviewdog 也支持在本地环境中运行,开发者可以在提交代码前预先检查并过滤掉不符合规范的代码。
输入格式
Reviewdog 支持多种输入格式,使其能够与广泛的工具兼容:
- errorformat:类似于 Vim 的 errorformat 功能,允许通过正则表达式解析任意格式的工具输出。
- Reviewdog Diagnostic Format (RDFormat):Reviewdog 推荐的通用诊断格式,支持 rdjson 和 rdjsonl 两种形式,能够提供更丰富的诊断信息,包括多行范围评论、严重性、规则代码和代码建议等。
- Diff:可以直接处理统一格式的 diff 输出,特别适用于代码格式化工具或提供代码建议的工具。
- Checkstyle Format:支持 Checkstyle XML 格式的输出。
- SARIF Format:支持静态分析结果交换格式(SARIF)。
在github仓库上使用也非常简单,只需要新建一个工作流:
快去试试吧