赞
踩
静态代码检查是一个老生常谈的问题,它通过对源代码进行分析,找出其中的潜在问题和错误,以提高代码质量和可维护性。
Go 语言的静态代码检查工具较多,常见的有:
以上谈到的工具,我们可以称之为 linter
。在维基百科是如下定义 lint 的:
在计算机科学中,lint 是一种工具程序的名称,它用来标记源代码中,某些可疑的、不具结构性(可能造成 bug)的段落。它是一种静态程序分析工具,最早适用于 C 语言,在 UNIX 平台上开发出来。后来它成为通用术语,可用于描述在任何一种计算机程序语言中,用来标记源代码中有疑义段落的工具。
其中 golangci-lint 是比较受欢迎的,使用人数也比较多的静态代码检查工具。golangci-lint 集成了非常多的 linter,包括上文提到的 govet,revive 等。
接下来,我们就来聊聊 golangci-lint。
golangci-lint 相比其他的静态代码检查工具,我觉得显著的优点有:
除此之外,golangci-lint 还在保持更新迭代,还在不断地更新 linter。有这么全的 linter 为你的代码保驾护航,你在提交代码时肯定会多一分从容与自信。
目前,有很多公司 / 项目使用了 golangci-lint 工具作为静态代码检查工具,例如 Google、Facebook、Istio、Red Hat OpenShift 等。
官方文档提供了多种下载方式,我们这里使用官方提供 curl
命令来进行下载:
$ curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
golangci/golangci-lint info checking GitHub for latest tag
golangci/golangci-lint info found version: 1.52.2 for v1.52.2/darwin/arm64
golangci/golangci-lint info installed ${YOUR_GOPATH}/bin/golangci-lint
如果条件允许的话,可以定期更新 golangci-lint 的版本,毕竟它仍在积极地更新。
之后,我们可以通过 golangci-lint version
来检查是否安装成功:
$ golangci-lint version
golangci-lint has version 1.52.2 built with go1.20.2 from da04413a on 2023-03-25T18:11:28Z
似乎新版本使用
go get
命令不能将golangci-lint
可执行程序安装到你的GOPATH
。
我们还可以查看默认生效或不生效的 linter 以及 linter 的分类:
$ golangci-lint help linters
我们可以通过执行 golangci-lint -h
查看其用法,golangci-lint 支持的子命令如下:
子命令 | 功能 |
---|---|
cache | 缓存控制并打印缓存的信息 |
completion | 生成 bash/fish/powershell/zsh 等自动补全脚本 |
config | 打印 golangci-lint 当前使用的配置文件路径 |
help | 打印 golangci-lint 的帮助信息 |
linters | 打印 golangci-lint 支持的 linter,并按启用/禁用分类 |
run | 执行 golangci-lint 对代码进行检查 |
version | 查看 golangci-lint 版本号 |
此外,golangci-lint 还支持一些全局选项。全局选项是指适用于所有子命令的选项,golangci-lint 支持的全局选项如下:
选项 | 功能 |
---|---|
–color | 是否带颜色打印,有 3 个值:always 、auto (默认值)、never |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。