bodyclose adalah alat analisis statis yang memeriksa apakah res.Body ditutup dengan benar.
Anda bisa mendapatkan bodyclose dengan go get perintah.
$ go get -u github.com/timakin/bodyclose bodyclose berjalan dengan go vet seperti di bawah saat Go adalah 1,12 dan lebih tinggi.
$ 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 Ketika Go lebih rendah dari 1.12, cukup jalankan perintah bodyclose dengan nama paket (jalur impor).
Tetapi tidak dapat menerima beberapa opsi seperti --tags .
$ bodyclose github.com/timakin/go_api/...
~ /go/src/github.com/timakin/api/internal/httpclient/httpclient.go:13:13: response body must be closed bodyclose memvalidasi apakah *net/http.response dari http permintaan panggilan metode Body.Close() seperti kode di bawah.
resp , err := http . Get ( "http://example.com/" ) // Wrong case
if err != nil {
// handle error
}
body , err := ioutil . ReadAll ( resp . Body )Kode ini salah. Anda harus menghubungi resp.body.close setelah selesai membaca 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 )Di Godoc klien. Lakukan aturan ini dijelaskan dengan jelas.
Jika Anda lupa kalimat ini, klien HTTP tidak dapat menggunakan kembali koneksi TCP yang persisten ke server untuk permintaan "Keep-Alive" berikutnya.