Go语言必知必会100问题-16 不使用 linter

不使用 linter

linter是一种用于分析代码和捕获错误的自动工具。本文内容不是列举通过linter检查出来的所有问题,而是通过个别例子来理解linter为什么重要,为什么对Go项目开发是必不可少的。

下面通过一个具体的例子来说明为什么linter很重要。在Go语言必知必会100问题-01 小心变量遮蔽文中,讨论了与变量遮蔽相关的潜在错误。使用vet,它是Go工具集中的标准linter,结合shadow可以检测出遮蔽变量问题。

package main
 
import "fmt"
 
func main() {
    i := 0
    if true {
        i := 1
        fmt.Println(i)
    }
    fmt.Println(i)
}

由于vet已集成在标准库中,所以只需要安装shadow工具,安装方法如下,然后联合vet工具,对上面的代码进行检查,输出结果如下。

$ go install \
  golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
$ go vet -vettool=$(which shadow)
./main.go:8:3:
  declaration of "i" shadows declaration at line 6

正如上面看到的,vet工具提示我们变量i被遮蔽。使用适当的linter可以检查潜在的错误,让我们的代码更健壮。

NOTE:linter没有涵盖本系列文章中所有的错误,建议各位同学继续阅读本系列其它文章。 本文的目标不是列举所有的linter问题,如果你想更深入学习这方面内容,可以查阅下面的链接文章。

  • https://golang.org/cmd/vet/(Go语言语法检查工具)
  • https://github.com/kisielk/errcheck(错误检查分析工具)
  • https://github.com/fzipp/gocyclo(圈复杂度分析工具)
  • https://github.com/jgautheron/goconst(重复字符串常量分析工具)

除了上面列举的检查工具,还应该使用代码格式化工具修复代码风格。下面是一些常用的代码格式化工具:

  • https://golang.org/cmd/gofmt/(标准Go代码格式化工具)
  • https://godoc.org/golang.org/x/tools/cmd/goimports(标准Go导入格式化工具)

此外,我们也应该关注golangci-lint(https://github.com/golangci/golangci-lint), 它集成了多种静态语法插件,有许多linter可以使用。允许并行运行以提高代码分析速度,非常的便捷。

linter和格式化程序是提高代码质量、保持代码风格一致的有力方法,我们应该花点时间了解如何使用它们,并且能够自动执行检查,例如将这些检查集成到CI或git提交钩子中,在提交代码前做风格检查等操作。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值