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-flow | if / else 分支的缩进风格 | 减少深层嵌套的表达习惯 |
官方仓库提供默认规则集文件,可作为团队配置的起点:先复制一份,逐条决定开启或关闭,并把每条关闭的原因写在注释里,避免后续无人知道为什么关。
与相邻工具的分工:gofmt 管格式排版,go vet 管可疑代码(格式化动词不匹配、锁被拷贝等),revive 管风格与约定;三者都进 CI 之后,再考虑用聚合工具统一入口。