| package a |
| |
| import ( |
| "log" |
| "net/http" |
| ) |
| |
| func goodHTTPGet() { |
| res, err := http.Get("http://foo.com") |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer res.Body.Close() |
| } |
| |
| func badHTTPGet() { |
| res, err := http.Get("http://foo.com") |
| defer res.Body.Close() // want "using res before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func badHTTPHead() { |
| res, err := http.Head("http://foo.com") |
| defer res.Body.Close() // want "using res before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func goodClientGet() { |
| client := http.DefaultClient |
| res, err := client.Get("http://foo.com") |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer res.Body.Close() |
| } |
| |
| func badClientPtrGet() { |
| client := http.DefaultClient |
| resp, err := client.Get("http://foo.com") |
| defer resp.Body.Close() // want "using resp before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func badClientGet() { |
| client := http.Client{} |
| resp, err := client.Get("http://foo.com") |
| defer resp.Body.Close() // want "using resp before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func badClientPtrDo() { |
| client := http.DefaultClient |
| req, err := http.NewRequest("GET", "http://foo.com", nil) |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| resp, err := client.Do(req) |
| defer resp.Body.Close() // want "using resp before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func badClientDo() { |
| var client http.Client |
| req, err := http.NewRequest("GET", "http://foo.com", nil) |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| resp, err := client.Do(req) |
| defer resp.Body.Close() // want "using resp before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func goodUnwrapResp() { |
| unwrapResp := func(resp *http.Response, err error) *http.Response { |
| if err != nil { |
| panic(err) |
| } |
| return resp |
| } |
| resp := unwrapResp(http.Get("https://golang.org")) |
| // It is ok to call defer here immediately as err has |
| // been checked in unwrapResp (see #52661). |
| defer resp.Body.Close() |
| } |
| |
| func badUnwrapResp() { |
| unwrapResp := func(resp *http.Response, err error) string { |
| if err != nil { |
| panic(err) |
| } |
| return "https://golang.org/" + resp.Status |
| } |
| resp, err := http.Get(unwrapResp(http.Get("https://golang.org"))) |
| defer resp.Body.Close() // want "using resp before checking for errors" |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |