bodyclose
1.0.0
bodyclose是一种静态分析工具,可以检查res.Body是否正确关闭。
您可以通过go get Command获得bodyclose 。
$ go get -u github.com/timakin/bodyclose当GO为1.12及更高时, bodyclose用go vet运行。
$ go vet -vettool= $( which bodyclose ) github.com/timakin/go_api/...
# github.com/timakin/go_api
internal/httpclient/httpclient.go:13:13: response body must be closed当GO低于1.12时,只需使用软件包名称(导入路径)运行bodyclose命令。
但是它不能接受一些选项,例如--tags 。
$ bodyclose github.com/timakin/go_api/...
~ /go/src/github.com/timakin/api/internal/httpclient/httpclient.go:13:13: response body must be closedbodyclose验证Body.Close() *net/http。
resp , err := http . Get ( "http://example.com/" ) // Wrong case
if err != nil {
// handle error
}
body , err := ioutil . ReadAll ( resp . Body )此代码是错误的。您必须致电resp.body.close完成读取resp.body。
resp , err := http . Get ( "http://example.com/" )
if err != nil {
// handle error
}
defer resp . Body . Close () // OK
body , err := ioutil . ReadAll ( resp . Body )在客户的godoc中。清楚地描述了这个规则。
如果您忘记了此句子,则HTTP客户端将无法重复使用持续的TCP连接到服务器,以获得后续的“远离”请求。