如何自动发现variable shadowing
靠人肉去排查还是容易遗漏的,Go工具链里有一个shadow命令可以帮助我们排查代码里潜在的variable shadowing问题。
第一步,安装shadow命令
go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
第二步,使用shadow检查代码里是否有variable shadowing
go vet -vettool=$(which shadow)
比如,我检查后的结果如下:
$ go vet -vettool=$(which shadow)
# example.com/shadow
./main.go:9:6: declaration of "i" shadows declaration at line 8
此外,shadow命令也可以单独使用,不需要结合go vet。shadow后面需要带上package名称或者.go源代码文件名。
$ shadow example.com/shadow
11-variable-shadowing/main.go:9:6: declaration of "i" shadows declaration at line 8
$ shadow main.go
11-variable-shadowing/main.go:9:6: declaration of "i" shadows declaration at line 8
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。