[ CloudWeGo 微服务实践 - 番外 ] Go 代码静态检查
缘由
最近在实践 CloudWeGo 套件时,发现的问题,连续给仓库提了好几个 PR,但是下午在尝试修复 bug 的时候,为了图省事,直接把本地代码抠出来放在了 GitHub 上直接 commit 提交了。后来发现一些 CI 检查没有通过:
再点进去具体的 commit 发现这次代码改动 GitHub Actions 有几个是失败的,具体如下:
失败原因一目了解,然来是有一些依赖包没有 import ,这种低级错误…… 直接复制粘贴上去的,犯错应该的。
而实际开发过程中,这些代码进入到生产环境的可能性比较小,但是不能说绝对没有。因为很多时候 Goland 也会做一些基本的检查,会标红、标黄提示等等,但有的人就是不看。如何避免这种比较低级的错误带来的故障呢?交给自动化工具再合适不过。我们再留意上面的 runner 也能看到:
特别留心一个 url,于是我们发现的一个新的工具,就是今天要介绍的。
staticcheck
我们顺着这个网址,就直接能大概工具的官网。
Staticcheck is a state of the art linter for the Go programming language. Using static analysis, it finds bugs and performance issues, offers simplifications, and enforces style rules.
安装
安装和使用可直接参考文档 >> https://staticcheck.io/docs/getting-started/
以后是我在 MacOS 的安装体验,在上边的安装文档能直接找到不同平台的安装方法,这里也有一个传送门是使用 Homebrew 快速安装 >> https://formulae.brew.sh/formula/staticcheck
使用
使用方法特别简单,直接执行:
比如下午的例子,我少了引入包
更多参数和输出格式控制建议也直接参考官网,
总结
今天先简单介绍这个工具。以后有新的发现我们继续说。
比如,这个工具 和 go vet / go build / golangci-lint 等又有什么区别和联系,作为思考题以后探索。
版权声明: 本文为 InfoQ 作者【baiyutang】的原创文章。
原文链接:【http://xie.infoq.cn/article/11236b45a4076ae9f2b46948c】。文章转载请联系作者。
评论