github.com/cockroachdb/tools@v0.0.0-20230222021103-a6d27438930d/go/analysis/passes/httpresponse/testdata/src/a/a.go (about)

     1  package a
     2  
     3  import (
     4  	"log"
     5  	"net/http"
     6  )
     7  
     8  func goodHTTPGet() {
     9  	res, err := http.Get("http://foo.com")
    10  	if err != nil {
    11  		log.Fatal(err)
    12  	}
    13  	defer res.Body.Close()
    14  }
    15  
    16  func badHTTPGet() {
    17  	res, err := http.Get("http://foo.com")
    18  	defer res.Body.Close() // want "using res before checking for errors"
    19  	if err != nil {
    20  		log.Fatal(err)
    21  	}
    22  }
    23  
    24  func badHTTPHead() {
    25  	res, err := http.Head("http://foo.com")
    26  	defer res.Body.Close() // want "using res before checking for errors"
    27  	if err != nil {
    28  		log.Fatal(err)
    29  	}
    30  }
    31  
    32  func goodClientGet() {
    33  	client := http.DefaultClient
    34  	res, err := client.Get("http://foo.com")
    35  	if err != nil {
    36  		log.Fatal(err)
    37  	}
    38  	defer res.Body.Close()
    39  }
    40  
    41  func badClientPtrGet() {
    42  	client := http.DefaultClient
    43  	resp, err := client.Get("http://foo.com")
    44  	defer resp.Body.Close() // want "using resp before checking for errors"
    45  	if err != nil {
    46  		log.Fatal(err)
    47  	}
    48  }
    49  
    50  func badClientGet() {
    51  	client := http.Client{}
    52  	resp, err := client.Get("http://foo.com")
    53  	defer resp.Body.Close() // want "using resp before checking for errors"
    54  	if err != nil {
    55  		log.Fatal(err)
    56  	}
    57  }
    58  
    59  func badClientPtrDo() {
    60  	client := http.DefaultClient
    61  	req, err := http.NewRequest("GET", "http://foo.com", nil)
    62  	if err != nil {
    63  		log.Fatal(err)
    64  	}
    65  
    66  	resp, err := client.Do(req)
    67  	defer resp.Body.Close() // want "using resp before checking for errors"
    68  	if err != nil {
    69  		log.Fatal(err)
    70  	}
    71  }
    72  
    73  func badClientDo() {
    74  	var client http.Client
    75  	req, err := http.NewRequest("GET", "http://foo.com", nil)
    76  	if err != nil {
    77  		log.Fatal(err)
    78  	}
    79  
    80  	resp, err := client.Do(req)
    81  	defer resp.Body.Close() // want "using resp before checking for errors"
    82  	if err != nil {
    83  		log.Fatal(err)
    84  	}
    85  }
    86  
    87  func goodUnwrapResp() {
    88  	unwrapResp := func(resp *http.Response, err error) *http.Response {
    89  		if err != nil {
    90  			panic(err)
    91  		}
    92  		return resp
    93  	}
    94  	resp := unwrapResp(http.Get("https://golang.org"))
    95  	// It is ok to call defer here immediately as err has
    96  	// been checked in unwrapResp (see #52661).
    97  	defer resp.Body.Close()
    98  }
    99  
   100  func badUnwrapResp() {
   101  	unwrapResp := func(resp *http.Response, err error) string {
   102  		if err != nil {
   103  			panic(err)
   104  		}
   105  		return "https://golang.org/" + resp.Status
   106  	}
   107  	resp, err := http.Get(unwrapResp(http.Get("https://golang.org")))
   108  	defer resp.Body.Close() // want "using resp before checking for errors"
   109  	if err != nil {
   110  		log.Fatal(err)
   111  	}
   112  }