go vet 工具的使用

vet 是 golang 中自带的静态分析工具,可以让我们检查出 package 或者源码文件中一些隐含的错误。

我们可以输入 go help vet 来了解一下它的简介,输入 go doc cmd/vet 可以查看详细一点的文档。

为什么使用 vet?

比如下面这段程序


package main

import "fmt"

func main() {
    test()
}

func test() {
    str := "Hello"
    fmt.Printf("%d World", str)
}

这时候编译是可以通过的。但是很明显,我们在 %d 的位置是要打印一个字符串,应该用 %s,这时候如果用 vet 扫描一下就可以避免这个问题

分析某个文件

go vet floder/main.go

分析某个包

go vet floder/*.go
go vet floder/...

也可以分析多个包和多个文件,用空格隔开即可。

另外,go 还有很多质量工具,最常用的就是 goimports(来检测引用包的问题),gofmt(代码格式问题),golangci-lint(语法检测),还有一些其他第三方的质量检测工具,帮助我们完善代码:https://github.com/analysis-tools-dev/static-analysis#go

比如 bodyclose 这个包,可以用来检测 HTTP 响应主体是否关闭,使用方法:

go vet -vettool=$(which bodyclose) github.com/timakin/go_api/...

配置在 goland 中使用:

goland 配置 go vet
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容