当前位置: 首页 > 工具软件 > GolangCI-Lint > 使用案例 >

golangci-lint Go静态代码检查工具的使用

姜嘉赐
2023-12-01

golangci lint

golangci lint是Go linter一个聚合器,里面内置了几十个linter,并且更新速度快,是一个强大的Go代码静态检查的工具。

golangci lint安装

官方提倡二进制安装,但为了快速入门,咱们就不使用二进制安装了

# Go 1.16+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.43.0

# Go version < 1.16
go get -u github.com/golangci/golangci-lint/cmd/golangci-lint@v1.43.0

快速上手

可以直接使用下面命令,会对当前目录下的所有文件进行静态代码检查。
这两个命令是等价的

golangci-lint run
golangci-lint run ./...

也可以指定具体检查哪些目录和文件

golangci-lint run dir1 dir2/... dir3/file1.go

golangci-lint可以零配置使用,默认情况下会启用和没有启用的linter可以使用下面命令查看

golangci-lint help linters

可以通过-E启用linter,-D禁用linters

golangci-lint run --disable-all -E errcheck

配置使用

配置文件的优先级低于命令行选项。如果在命令行和配置文件中提供了相同的bool/string/int选项,则命令行中的选项将被使用。
启用禁用的linter是在命令行和配置文件组合而来的。

golangci-lint 在当前工作目录的以下路径中查找配置文件:

  • .golangci.yml
  • .golangci.yaml
  • .golangci.toml
  • .golangci.json

golangci-lint 还在从第一个分析路径的目录到根目录的所有目录中搜索配置文件。如果没有找到配置文件,将尝试在家目录中找到一个。
使用golangci-lint config path,查看使用的是哪个配置文件。

下面是配置文件的简单示例和注释

run:
  skip-dirs: # 设置要忽略的目录
    - .*~
    - cmd
  skip-files: # 要忽略的文件_test.go
    - _test.go
  timeout: 2m #超时时间,默认1分钟
  concurrency: 4 #默认的并发使用cup数量
linters-settings: 
  errcheck:
    check-type-assertions: true # 报告不检查类型断言的错误
  gocognit:
    min-complexity: 10 # 报告的最小代码复杂度,默认为30
  dogsled:
    max-blank-identifiers: 2 # 检查有太多空白标识符的赋值;默认是2
  lll:
    line-length: 20 # 最大行长,更长的行将被报告。默认是120,
  makezero:
    always: false # 只允许长度为0的片初始化。默认的是false.
linters:
  disable-all: true #关闭所有
  enable: #使用的linter
    - errcheck
    - gocognit
    - dogsled
    - lll
    - makezero

官方提供了yaml配置文件的例子,里面包含了所有的配置项和注释,地址是这个:
https://github.com/golangci/golangci-lint/blob/master/.golangci.example.yml

 类似资料: