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 |