使用revive来改进golang项目的质量

Revive是一个快速且灵活的Go语言代码静态分析工具,旨在替代golint。它支持配置文件以启用或禁用规则,提供多样的格式化选项,并具有更高的性能。推荐配置包含24条规则,帮助开发者提升代码质量,而全部规则多达70条,允许用户根据需要自定义规则集。此外,还有GUI配置工具如凌鲨(linksaas)的微应用,使得配置更加便捷。
摘要由CSDN通过智能技术生成

Revive是一个快速、可配置、可扩展、灵活的Go语言Linter,可以用来取代Golint。它提供了一个用于自定义规则的框架,能够定义一组预设的规则集合,以改善开发和代码审查过程。

Revive和golint的区别:

  • 允许使用配置文件启用或禁用规则。
  • 允许使用TOML文件配置检测规则。
  • 运行与golint相同的规则快2倍。
  • 可续的类型检查。大多数golint规则不需要类型检查。如果你在配置文件中禁用它们,revive将比golint快6倍。
  • 提供多个格式化程序,使我们可以自定义输出。
  • 允许为整个检测器或仅基于某些规则的失败自定义返回代码。
  • 每个人都可以使用自定义规则或格式化程序轻松地扩展它。
  • Revive提供了比golint更多的规则。

Revive推荐配置有24条规则,全部规则有70条。在使用初期可以使用推荐配置,避免过多的警告造成无从下手改进。随着推荐规则跑得很顺的情况下,可以尝试更多的规则组合来改进代码规范和发现潜在缺陷。

使用gui配置工具

使用gui配置工具,可以让配置revive规则更简单。

在凌鲨(linksaas)的微应用里面可以找到revive配置工具,快速对revive进行配置。

凌鲨(linksaas)是以开源方式运作的,您可以从linksaas · 极狐GitLab 访问源代码。也可以从 凌鲨 软件研发团队信息枢纽 下载预编译的版本。

附录

推荐规则

  • 空引用检查(blank-imports)
  • context参数检查(context-as-argument)
  • context键检查(context-keys-type)
  • 使用.导入包检查(dot-imports)
  • 空块检查(empty-block)
  • 错误命名检查(error-naming)
  • 错误返回检查(error-return)
  • 错误字符串检查(error-strings)
  • errof调用检查(errorf)
  • 导出函数检查(exported) 
  • if返回检查(if-return)
  • 自增自减格式检查(increment-decrement)
  • 流程精简检查(indent-error-flow)
  • 包注释检查(package-comments)
  • 简化range检查(range)
  • 方法接收者命名检查(receiver-naming)
  • 内置名称重定义检查(redefines-builtin-id) 
  • 消除else块检查(superfluous-else)
  • 时间命名检查(time-naming)
  • 变量命名检查(var-naming)
  • 变量申明简化检查(var-declaration) 
  • 未导出返回类型检查(unexported-return)
  • 不可到达代码检查(unreachable-code)
  • 未使用参数检查(unused-parameter)

全部规则

  • 增加常量定义(add-constant)
  • 参数数量限制(argument-limit)
  • sync/atomic检查(atomic)
  • 直接返回检查(bare-return)
  • 禁用字符检查(banned-characters)
  • 空引用检查(blank-imports)
  • 逻辑表达式布尔变量检查(bool-literal-in-expr)
  • 显式垃圾收集调用检查(call-to-gc)
  • 认知复杂度检查(cognitive-complexity)
  • 注释空格检查(comment-spacings)
  • 易误解的命名(confusing-naming)
  • 易误解返回参数检查(confusing-results)
  • 表达式结果恒定检查(constant-logical-expr)
  • context参数检查(context-as-argument)
  • context键检查(context-keys-type)
  • 圈复杂度检查(cyclomatic)
  • 数据竞争检查(datarace)
  • 退出函数检查(deep-exit)
  • defer常见错误检查(defer)
  • 使用.导入包检查(dot-imports)
  • 重复导入包检查(duplicated-imports)
  • 提前返回检查(early-return)
  • 空块检查(empty-block)
  • 空白行检查(empty-lines)
  • 错误命名检查(error-naming)
  • 错误返回检查(error-return)
  • 错误字符串检查(error-strings)
  • errof调用检查(errorf)
  • 导出函数检查(exported)
  • 文件头检查(file-header)
  • 标记参数检查(flag-parameter)
  • 函数返回数量检查(function-result-limit)
  • 函数长度检查(function-length)
  • get前缀函数检查(get-return)
  • 相同分支检查(identical-branches)
  • if返回检查(if-return)
  • 自增自减格式检查(increment-decrement)
  • 流程精简检查(indent-error-flow)
  • 黑名单包检查(imports-blacklist)
  • 导入隐藏检查(import-shadowing)
  • 代码行长度检查(line-length-limit)
  • 公共结构数量检查(max-public-structs)
  • 参数修改检查(modifies-parameter)
  • 修改值接收者检查(modifies-value-receiver)
  • 内联结构检查(nested-structs)
  • 优化计算顺序检查(optimize-operands-order)
  • 包注释检查(package-comments)
  • 简化range检查(range)
  • 闭包中使用range检查(range-val-in-closure)
  • 通过地址range检查(range-val-address)
  • 方法接收者命名检查(receiver-naming)
  • 内置名称重定义检查(redefines-builtin-id)
  • 字符串格式检查(string-format)
  • 结构标签检查(struct-tag)
  • 消除else块检查(superfluous-else)
  • 时间相等检查(time-equal)
  • 时间命名检查(time-naming)
  • 变量命名检查(var-naming)
  • 变量申明简化检查(var-declaration)
  • 无条件递归检查(unconditional-recursion)
  • 未导出命名检查(unexported-naming)
  • 未导出返回类型检查(unexported-return)
  • 未处理错误检查(unhandled-error)
  • 多余语句检查(unnecessary-stmt)
  • 不可到达代码检查(unreachable-code)
  • 未使用参数检查(unused-parameter)
  • 未使用接收器检查(unused-receiver)
  • any使用提示检查(use-any)
  • 多余break检查(useless-break)
  • WaitGroup传值检查(waitgroup-by-value)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌鲨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值