goland golang-ci lint
golangci-lint
What & Why
imagelint
在计算机科学中,lint是一种工具程序的名称,它用来标记源代码中,某些可疑的、不具结构性(可能造成bug)的段落。它是一种静态程序分析工具,最早适用于C语言,在UNIX平台上开发出来。后来它成为通用术语,可用于描述在任何一种计算机程序语言中,用来标记源代码中有疑义段落的工具。
golangci lint
能快速执行linters。并行运行linter,使用缓存,支持yaml配置,与所有主要IDE集成,并包含数十个linter,支持定制化。
作用:
开发中使用能提前检查一些语法问题和制定代码规范。
github :https://github.com/golangci/golangci-lint
How
安装
brew install golangci-lint
brew upgrade golangci-lint
or
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.42.1
版本要求
本地go 1.16.5
go1.12+ golangci-lint (>= 1.18.0)
检测是否安装成功 golangci-lint --version
image配置
goland 配置 -v 显示执行流程,用来查看用了哪些linter
run -v --disable=typecheck $FileDir$
对改动的文件目录做扫描,也可以对整个项目扫描。但开发中这样使用效率低
到这里基本就可以使用,修改文件保存时,会检查当前文件下代码
支持配置的格式(非必需,可以自己定义配置,没有会默认)
-
.golangci.yml
-
.golangci.yaml
-
.golangci.toml
-
.golangci.json
GolangCI Lint还搜索从第一个分析路径的目录到根目录的所有目录中的配置文件。如果没有找到配置文件,GolangCI Lint将尝试在主目录中找到一个。要查看正在使用哪个配置文件以及从何处获取配置文件,请使用-v选项运行查看
使用
可以像上面自定义配置文件来配置运行的参数和使用的linter和一些配置参数,如果不配置,会用默认的,
golangci-lint help linters 查看默认使用的 linters
https://golangci-lint.run/usage/linters/
image默认使用的9种linter
deadcode # 未使用的代码
errcheck # 是否对error处理
gosimple #检查代码是否可以简化
govet # 检查 go 源代码并报告可疑结构,例如 Printf 调用,其参数与格式字符串不一致
ineffassign #检测是否有未使用的代码、变量、常量、类型、结构体、函数、函数参数等
staticcheck #静态分析检查
structcheck #检查没有用的结构体字段
unused #检查未使用的常量,变量,函数和类型
varcheck #查找未使用的全局变量和常量