不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

Golang插件-golangci-lint 基本介绍

golangci-lint 基本介绍

golangci-lint 是一个 Go linters 聚合器。

特征

⚡ 非常快:并行运行 linter,重用 Go 构建缓存并缓存分析结果。
⚙️ 基于 Yaml 的配置。
🖥 与 VS Code、Sublime Text、GoLand、GNU Emacs、Vim、Atom、GitHub Actions 的集成。
🥇 包含 48 个linters,无需安装。
📈 由于调整了默认设置,误报的最小数量。
🔥带有颜色、源代码行和标记标识符的漂亮输出。

golangci-lint 各配置项介绍

名字 描述 预设
deadcode 找到未使用的代码 没用过
errcheck errcheck是用于在Go程序中检查未选中错误的程序。在某些情况下,这些未选中的错误可能是关键错误 错误
gosimple Linter for Go 源代码,专门用于简化代码 样式
govet Vet 检查 Go 源代码并报告可疑结构,例如参数与格式字符串不一致的 Printf 调用 错误
ineffassign 检测何时不使用对现有变量的赋值 没用过
staticheck 查找未使用的结构字段 没用过
typecheck 就像 Go 编译器的前端一样,解析和类型检查 Go 代码 错误
unused 检查未使用常量,变量,函数和类型的Go代码 没用过
varcheck 查找未使用的全局变量和常量 没用过
asciicheck 简单的 linter 检查您的代码是否不包含非 ASCII 标识符 错误、样式
bodyclose 检查 HTTP 响应体是否成功关闭 性能、错误
cyclop 检查函数和包的圈复杂度 复杂性
depguard Go linter 检查包导入是否在可接受的包列表中 样式、导入、模块
dogsled 检查具有太多空白标识符的分配(例如 x, , , _, := f()) 样式
dupl 代码克隆检测工具 样式
durationcheck 检查两个持续时间相乘 错误
errorlint errorlint 是一个 linter,可用于查找会导致 Go 1.13 中引入的错误包装方案出现问题的代码。 错误
exhaustive 检查枚举 switch 语句的详尽程度 错误、样式
exhaustivestruct 检查所有结构的字段是否已初始化 样式、测试
exportloopref 检查指向封闭循环变量的指针 错误
forbidigo 禁止标识符 样式
forcetypeassert 查找强制类型断言 错误、样式
funlen 用于检测长功能的工具 复杂性
gci gci 控制 golang 包导入顺序并使其始终具有确定性;检查是否存在全局变量;该分析器检查任何发现的全局变量和错误。 格式、导入
gochecknoglobals 全局变量是在包作用域中声明并且可以读取的变量,并由包内的任何函数写入。 全局变量可能导致难以跟踪的副作用。 一个函数中的代码可能改变变量状态,而另一个不相关的代码块可能是受其影响。 样式
gocognit 检查 Go 代码中是否不存在 init 函数 样式
asciicheck 计算和检查功能的认知复杂性 复杂性
goconst 查找可以被常量替换的重复字符串 样式
gocritic 提供许多诊断程序来检查错误、性能和样式问题。无需通过动态规则重新编译即可扩展。动态规则是使用 AST 模式、过滤器、报告消息和可选建议以声明方式编写的。 样式、性能
gocyclo 计算并检查功能的循环复杂性 样式
godot 检查评论是否在一段时间内结束 样式、评论
godox 用于检测FIXME,TODO和其他注释关键词的工具 样式、评论
goerr113 Golang Linter检查错误处理表达式 样式、错误
gofmt GOFMT检查代码是否是GOFMT-ed。默认情况下,此工具将使用-s选项运行以检查代码简化 格式
gofumpt gofumpt检查代码是否是gofumpt-ed 格式
goheader Checks是文件标题与模式匹配 样式
goimports Goimports 完成了 gofmt 所做的一切。 此外,它还检查未使用的导入 格式、引入
golint ⚠ linter 的存储库已由所有者存档。 被revive取代。 样式
gomnd 检测幻数的分析器。 样式
gomoddirectives 管理 go.mod 中“replace”、“retract”和“excludes”指令的使用。 样式、模块
gomodguard 允许和阻止list linter 用于直接 Go 模块依赖项。 这与 depguard 不同,depguard 有不同的块类型,例如版本约束和模块推荐。 样式、引入、模块
goprintffuncname 检查打印类函数是否以结尾命名为f 样式
gosec 检查安全问题的源代码 错误
ifshort 尽可能检查您的代码是否对 if 语句使用了简短的语法 样式
importas 强制使用一致的导入别名 样式
interfacer ⚠ LINTER的存储库已被所有者存档 样式
lll 报告排长队 样式
makezero 使用非零初始长度查找切片声明 样式、错误
maligned ⚠ linter 的存储库已由所有者存档。 替换为 govet ‘fieldalignment’。 性能
misspell 在评论中查找常见拼写错误的英语单词 样式、评论
nakedret 在大于指定函数长度的函数中查找裸返回 样式
nestif 报告深度嵌套的 if 语句 复杂性
nilerr 找到即使检查错误不是nil,也可以找到返回nil的代码。 错误
nlreturn nlreturn在返回和分支机构语句之前检查新行以增加代码清晰度 样式
noctx noctx发现没有context.context的发送HTTP请求 性能、错误
nolintlint 报告不良或不足的Nolint指令 样式
paralleltest paralleltest 在你的 Go 测试中检测到 t.Parallel() 方法的缺失使用 样式、测试
prealloc 查找可能预先分配的切片声明 性能
predeclared 找到隐藏 Go 预先声明的标识符之一的代码 样式
promlinter 通过 promlint 检查 Prometheus 指标命名 样式
revive 用于 Go 的快速、可配置、可扩展、灵活且美观的 linter。 直接替换 golint。 样式
rowserrcheck 检查是否已成功检查行的错误 错误、SQL
scopelint ⚠ 所有者已弃用了Linter的存储库。由exportloopref替换。 错误
sqlclosecheck 检查sql.rows和sql.stmt是否已关闭。 错误、SQL
stylecheck STYLECHECK是GOLINT的替代品 样式
tagliatelle 检查struct标签。 样式
testpackage LINTE让您使用单独的_test包 样式、测试
thelper T Helper检测Golang测试助手没有T.helper()单元格,并检查测试助手的一致性 样式
tparallel parallel 检测 Go 测试代码中 t.Parallel() 方法的不当使用 样式、测试
unconvert 删除不必要的类型转换 样式
unparam 报告未使用的功能参数 未使用
wastedassign WastedAssign找到浪费的分配声明。 样式
whitespace 检测前导和尾随空格的工具 样式
wrapcheck 检查从外部包返回的错误是否已包装 样式、错误
wsl 强制您使用空行 样式

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"--skip-dirs=vendor",
"--fast",
"--enable-all",
"--disable=gochecknoglobals",
"--disable=lll",
"--disable=gofmt",
"--disable=depguard",
"--disable=misspell",
"--disable=gocritic",
"--disable=gochecknoinits",
"--disable=funlen",
"--disable=wsl",
"--disable=gomnd",
"--disable=gosec",
"--disable=nestif",
"--disable=exhaustivestruct",
"--disable=godot",
"--disable=nlreturn",
"--disable=makezero",
"--disable=tagliatelle",
"--disable=gocognit"
------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!