在写代码的时候,或多或少有一些注意不到的地方,我们有没有办法在运行前就消灭掉一部分Bug呢?它来了,lint
什么是lint
-
通俗的讲就是静态语法检测,扫描&分析源代码,找出一些不符合规范的代码 -
我们也可以根据团队的代码规范来自定义lint规则 -
一切没有工具约束的规范都是耍流氓
如何使用lint
-
我们可以在github上找到各种各样的lint,比如unuse code、deprecated api等 -
但是这里不推荐自己组合各种各样的lint,而是使用今天的主角 golangci-lint,它是一个lint框架,可以通过配置开启五花八门的lint,功能强大使用灵活
golangci-lint
安装
macos
brew install golangci-lint
shell
curl-sSfLhttps://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s – -b $(go env GOPATH)/bin
source
go install github.com/golangci/golangci-lint/cmd/golangci-lint@
更多安装方式
简单使用
-
查看支持哪些lint golangci-lint help linters
-
执行lint,在需要lint的项目中执行 golangci-lint run (如果没有相关的配置文件,会走默认的lint配置)
这里就可以根据lint的结果去做相应的修改了
配置文件
-
我们可以自定义配置文件,定制更符合业务规范的lint规则
run:
timeout: 5m
modules-download-mode: readonly
linters:
disable-all: true
enable: # 下面是开启的lint列表
- errcheck
- goimports
- golint
- govet
- staticcheck
linters-settings:
golint:
# minimal confidence for issues, default is 0.8
min-confidence: 0.8
issues:
exclude-use-default: false
max-issues-per-linter: 0
max-same-issues: 0
-
配置文件介绍 (https://golangci-lint.run/usage/configuration/)
业务团队中如何推广
为了做好平滑的开启lint,推荐以下方式
-
每个项目确定责任人 -
分批开放lint规则,先从简单的启用,逐步过渡到符合业务的lint -
在开启一个lint前由负责人先fix掉该lint引起的问题
来为高文举老师打call
原文始发于微信公众号(GoCN):让 GO 的代码稳点飞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论