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連接到服務器,以獲得後續的“遠離”請求。