写点什么

[ CloudWeGo 微服务实践 - 番外 ] Go 代码静态检查

用户头像
baiyutang
关注
发布于: 2021 年 11 月 02 日
[ CloudWeGo 微服务实践 - 番外 ] Go 代码静态检查

缘由

最近在实践 CloudWeGo 套件时,发现的问题,连续给仓库提了好几个 PR,但是下午在尝试修复 bug 的时候,为了图省事,直接把本地代码抠出来放在了 GitHub 上直接 commit 提交了。后来发现一些 CI 检查没有通过:


再点进去具体的 commit 发现这次代码改动 GitHub Actions 有几个是失败的,具体如下:


失败原因一目了解,然来是有一些依赖包没有 import ,这种低级错误…… 直接复制粘贴上去的,犯错应该的。


而实际开发过程中,这些代码进入到生产环境的可能性比较小,但是不能说绝对没有。因为很多时候 Goland 也会做一些基本的检查,会标红、标黄提示等等,但有的人就是不看。如何避免这种比较低级的错误带来的故障呢?交给自动化工具再合适不过。我们再留意上面的 runner 也能看到:

{"source":{"name":"staticcheck","url":"https://staticcheck.io"},"message":"undeclared name: server"
复制代码


特别留心一个 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

brew install staticcheck
复制代码




使用

使用方法特别简单,直接执行:

staticcheck  xxx.go
复制代码

比如下午的例子,我少了引入包

更多参数和输出格式控制建议也直接参考官网,


总结

今天先简单介绍这个工具。以后有新的发现我们继续说。

比如,这个工具 和 go vet / go build / golangci-lint 等又有什么区别和联系,作为思考题以后探索。


发布于: 2021 年 11 月 02 日阅读数: 23
用户头像

baiyutang

关注

广州 2017.12.13 加入

Microservices | Golang | Cloud Nitive | “Smart work,Not hard”

评论

发布
暂无评论
[ CloudWeGo 微服务实践 - 番外 ] Go 代码静态检查