golangci-lint检查项说明

golangci-lint

说明

  1. 集成各项golang的静态检查工具
  2. 英文原版说明地址
  3. 内容涉及到编码风格(style)、错误处理(error)、会导致代码(bugs)、检查测试代码(test)、metalinter、sql相关判断(sql)、影响性能(performance)、圈复杂度(complexity)、注释(comment)、包引用(import)、模块管理(module)、代码格式化(format)

默认启动检查工具

名字 描述 预设作用
deadcode 发现未使用的代码 unused
indeffassign 检查没有使用参数 unused
structcheck 检查没有使用的struct的元素项 unused
unused 检查没有使用的go代码,包含没有使用的常量、变量、函数、和类型 unused
varcheck 检查没有使用的全局的变量和常量 unused
errcheck 检查没有判断err的场景,这些没有检查的场景可能导致致命bug在某些场景 bugs、error
gosimple 简化代码 style
govet 检查源代码、报告可疑的结构体,如果Printf函数调用,参数没有对齐字符串格式 bugs、metalinter
staticcheck 专业做静态检查的工具,其它的工具只是一个简单的github仓库 bugs、metalinter
typecheck 类似编译的前端,解析和检查type bugs

默认不启用的检查工具(-E/–enable)

名字 描述 预设作用
asciicheck 检查代码中是否有非ascii码值 bugs、style
bidichk 检查危险的unicode字符序列,一般写代码触发比较少 bugs
bodyclose 检查http response是否成功关闭 performance、bugs
contextcheck 检查函数是否使用非继承的context ,即没有继承内置context的context bugs
cyclop 检查函数和包的循环复杂度 complexity
depguard 检查包引用是否在可以接受的包列表中
dogsled 检查赋值是否有过多的空识别体(如x,_, := f()) style
dulp 检查 代码抄袭检查
durationcheck 检查两个duration相乘是否超过了安全范围 bugs
errname 检查err的定义规范,有个公约:types类型的定义是以Error结尾的,常量的定义是Err打头的 style
errorlintt 检查可用于查到会导致Go 1.13中引入的错误包封装方案而出现的代码问题 bugs
exhaustive(全面的) 检查switch的全面性,以免遗漏场景 bugs
exhaustivestruct 检查结构体的元素项是否都初始化了 bugs
exportloopref 检查循环中是否有指针环境变量 bugs
forbidigo 被禁止的特定标识符 style
forcetypeassert 强制类型断言,检查interface转换有没有进行类型校验 style
funlen 检查长函数,默认是60行,40条语句 complexity
gci 控制golang的包引用总是按序且稳定的 format,import
gochecknoglobals 检查没有全局变量 style
gocognit 检查函数的复杂度,有具体的计算公式,具体可以查看对应代码仓库的README说明 complexity
goconst 检查是否有需要使用const代替的strings类型 style
gocritic 高可扩展性的go源码linter,特性:超过100中以上的诊断项 style、metalinter
gocycle 检查和检查函数的圈复杂度 complexity
godot 检查评论是否以句号结尾 style、comment
godox 检查代码中的FIXME、TODO和其它评论关键字 style、comment
goerr113 检查errors处理表达式 style、comment
gofmt 检查代码是否被gofmt过了 format
gofumpt 检查代码是否gofumpt(比gofmt更加严格的format工具)过了 format
goheader 检查license头部是否满足格式要求 style
goimports 格式化imports,去掉没有用的import format、import
golint 是一个github仓库, 已经被作者设置成archived状态了,被revive替代 style
gomnd 检查魔鬼数字 style
gomoddirectives 管理go.mod文件里面的replace(替换)、retract(收回)、excludes(排除)指令,特性:禁止所有的replace指令 style
gomodguard 允许和阻止的列表对于go mod的间接依赖 style、import、module
goprintffuncname 检查类似printf的函数是否以f结尾 style
gosec 检查源代码是否有安全问题,通过AST的方式 bugs
ifshort 检查if语句是否使用的简单的语法 style
importas 强制一致性的import别名
interfacer 仓库已经被归档 style
ireturn 接受接口,返回具体的类型,而不是接口,具体可以看下对应仓库下面的用例 style
III 检查长语句 style
makezero slice初始化的时候,不要固定长度 style
maligned 该仓库已经被archived,用govet的fieldlignment替代 performance
misspell 检查英文单词错误 style、comment
nakedret 函数有返回,使用了返回命名,返回时,有些有返回,有没有使用默认值 style
nestif 检查深度嵌套的if语句 complexity
nilerr 检查代码中是否有为nil的err返回,即上层返回了err,检查完err后,直接返回了nil bugs
nilnil 返回两个参数,一个数据,一个是err,两个都是nil,不是推荐的 style
nlreturn 在return之前,空格一行,表明不同的代码分段 style
noctx 检查发送request请求时,是否没有context.Context performanace, bugs
nolintlint nolint指令(对整个文件不进行lint分析),该工具就是发现 格式不对或者不充分的nolint style
paralleltest 检查测试代码中是否缺失Parallel函数 style、test
prealloc 检查slice是否被提前被分配空间 perfomance
promlinter 检查prometheus metrics的命令是否规范 style
revive 替换golint的,更加快捷,可配置,可扩展性强,更加平滑,更加漂亮 style、metalinter
rowserrcheck sql执行的检查,检查sql.Rows.Err是否被检查 bugs、sql
scopelint 仓库已经archived,由exportlooppref替换 bugs
sqlclosecheck 检查sql.Rows和sql.Stmt是否被关闭 bugs、sql
stylecheck golint的替代 style
tagliatelle 检查struct的tags的格式 style
tenv 检查go1.17的版本是否使用os.Setenv替换t.Setenv,在测试代码中直接使用t.SetEnv即可 style、test
testpackage 使用分开的*_test的包目录,如果是测试代码的话 style、test
thelper 检查帮助函数里面没有调用t.Helper()函数 style、test
tparallel 检查测试代码中对于t.Parallel函数使用不恰当的测试代码 style、test
unconvert 去掉没有必要的type转换 style
unparam 上报没有使用的函数参数 unused
varnamelen 检查变量名字的长度在它自己的域内,生命周期越短,命名可以简短 style
wastedassign 非必要的赋值语句 style
whitespace 检查头部和尾部的空格 style
wrapcheck 检查外部包返回的err是否封装过,应对的是同一个包被不同的函数调用,不知道哪里出错了,应该封装一下 style、error
wsl 强制使用空行,使代码分段,利于理解 style

通过配置的方式进行配置

你可能感兴趣的:(golang,linter,golang)