首页/开发/代码质量与评审速查/revive:可配置的 Go 规范检查
规范与静态检查65 条

revive:可配置的 Go 规范检查

revive 是 golint 停更后的社区替代:规则可按 revive.toml 配置,命名、注释要求等都能按团队约定裁剪,适合作为规范检查层。

revive 是什么

revive 是 Go 社区在 golint 停止维护后推出的替代工具,用 Go 自身实现,按规则名开关与配置参数。命名规范、注释要求、错误处理等检查项都能在配置文件里按团队约定裁剪,因此适合作为 Go 项目的规范检查层;它查的是风格与约定,与 go vet 的缺陷类检查互补。

基本信息

适用平台Go 工具链(任意操作系统)
安装方式go install 社区仓库中的命令包
配置文件revive.toml(规则开关与参数)
输出格式-formatter 可选 friendly / json / unix 等
自动修复配置时可开启部分规则的快速修复

典型使用场景

  • 新项目接入统一的命名与注释规范
  • CI 中对本次变更的文件做增量检查
  • 把团队约定(导出符号必须有注释等)写成规则
  • 替换已停止维护的 golint,衔接原有习惯
  • 与 gofmt、go vet 组成提交前的三维检查

基础用法

基础用法
revive -config revive.toml ./...              # 用指定配置扫描所有包
revive -formatter friendly ./...               # 人类可读的输出格式
revive -formatter unix ./... > revive.txt      # 便于 CI 解析与上报
revive -version                                # 核对版本,规则集会随版本变化

配置片段

配置片段
ignoreGeneratedHeader = false
severity = "warning"
confidence = 0.8

[rule.var-naming]        # 命名风格
  severity = "warning"

[rule.line-length-limit]  # 单行长度上限
  arguments = [120]

[rule.exported]          # 导出符号的注释要求
  severity = "warning"

常见规则

规则名检查内容说明
exported导出符号缺少注释说明按团队文档要求决定是否开启
var-naming变量与包的命名风格默认启用,可按约定调整例外
line-length-limit单行超过设定长度参数可调,配合 gofmt 使用
error-return错误返回值处理不当与错误处理规范一起落地
indent-error-flowif / else 分支的缩进风格减少深层嵌套的表达习惯
官方仓库提供默认规则集文件,可作为团队配置的起点:先复制一份,逐条决定开启或关闭,并把每条关闭的原因写在注释里,避免后续无人知道为什么关。
与相邻工具的分工:gofmt 管格式排版,go vet 管可疑代码(格式化动词不匹配、锁被拷贝等),revive 管风格与约定;三者都进 CI 之后,再考虑用聚合工具统一入口。

易错点

  • 照搬 golint 的默认规则:只覆盖基础问题,收益有限,需按团队约定追加规则
  • 规则集长期不更新:约束力随时间流失,最后被整体关闭
  • 把风格告警全部设为错误级:CI 被格式问题频繁打断,真正缺陷被淹没
  • 只在本地手动运行:规范依赖个人自觉,执行率会快速下降
  • 关闭规则不留原因:换人接手后没人敢开回来,规则集只减不增

数据来源与参考

  • revive 官方仓库(github.com/mgechev/revive)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌