// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "go/ast" ) var httpFinalURLFix = fix{ "httpfinalurl", httpfinalurl, `Adapt http Get calls to not have a finalURL result parameter. http://codereview.appspot.com/4535056/ `, } func init() { register(httpFinalURLFix) } func httpfinalurl(f *ast.File) bool { if !imports(f, "http") { return false } fixed := false walk(f, func(n interface{}) { // Fix up calls to http.Get. // // If they have blank identifiers, remove them: // resp, _, err := http.Get(url) // -> resp, err := http.Get(url) // // But if they're using the finalURL parameter, warn: // resp, finalURL, err := http.Get(url) as, ok := n.(*ast.AssignStmt) if !ok || len(as.Lhs) != 3 || len(as.Rhs) != 1 { return } if !isCall(as.Rhs[0], "http", "Get") { return } if isBlank(as.Lhs[1]) { as.Lhs = []ast.Expr{as.Lhs[0], as.Lhs[2]} fixed = true } else { warn(as.Pos(), "call to http.Get records final URL") } }) return fixed }