bodyclose ist ein statisches Analysetool, das überprüft, ob res.Body korrekt geschlossen ist.
Sie können bodyclose erhalten, indem Sie den Befehl go get .
$ go get -u github.com/timakin/bodyclose bodyclose Run With go vet wie unten, wenn GO 1,12 und höher ist.
$ 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 Wenn GO niedriger als 1,12 ist, führen Sie einfach den Befehl bodyclose mit dem Paketamen (Importpfad) aus.
Es können jedoch einige Optionen wie --tags nicht akzeptiert werden.
$ bodyclose github.com/timakin/go_api/...
~ /go/src/github.com/timakin/api/internal/httpclient/httpclient.go:13:13: response body must be closed bodyclose bestätigt, ob *net/http.Response von HTTP Request Calls Methode Body.Close() wie unten Code.
resp , err := http . Get ( "http://example.com/" ) // Wrong case
if err != nil {
// handle error
}
body , err := ioutil . ReadAll ( resp . Body )Dieser Code ist falsch. Sie müssen resp.body anrufen.
resp , err := http . Get ( "http://example.com/" )
if err != nil {
// handle error
}
defer resp . Body . Close () // OK
body , err := ioutil . ReadAll ( resp . Body )Im Godoc des Klienten. Diese Regel wird deutlich beschrieben.
Wenn Sie diesen Satz vergessen, kann ein HTTP-Client eine anhaltende TCP-Verbindung zum Server für eine nachfolgende "Keep-Alive" -Anforderung nicht wiederverwenden.