const Doc … var Analyzer … func run(pass *analysis.Pass) (interface{ … } // isHTTPFuncOrMethodOnClient checks whether the given call expression is on // either a function of the net/http package or a method of http.Client that // returns (*http.Response, error). func isHTTPFuncOrMethodOnClient(info *types.Info, expr *ast.CallExpr) bool { … } // restOfBlock, given a traversal stack, finds the innermost containing // block and returns the suffix of its statements starting with the current // node, along with the number of call expressions encountered. func restOfBlock(stack []ast.Node) ([]ast.Stmt, int) { … } // rootIdent finds the root identifier x in a chain of selections x.y.z, or nil if not found. func rootIdent(n ast.Node) *ast.Ident { … }