mirror of
https://github.com/golang/go
synced 2024-11-17 23:04:56 -07:00
cmd/vet: don't treat trailing % as possible formatting directive
Eliminates the following false positive: cmd/go/go_test.go:1916: possible formatting directive in Error call The line in question: tg.t.Error("some coverage results are 0.0%") Updates #11041 Change-Id: I3b7611fa3e0245714a19bd5388f21e39944f5296 Reviewed-on: https://go-review.googlesource.com/27128 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
8e90b9026b
commit
6ad76718cf
@ -626,7 +626,10 @@ func (f *File) checkPrint(call *ast.CallExpr, name string) {
|
||||
}
|
||||
arg := args[0]
|
||||
if lit, ok := arg.(*ast.BasicLit); ok && lit.Kind == token.STRING {
|
||||
if strings.Contains(lit.Value, "%") {
|
||||
// Ignore trailing % character in lit.Value.
|
||||
// The % in "abc 0.0%" couldn't be a formatting directive.
|
||||
s := strings.TrimSuffix(lit.Value, `%"`)
|
||||
if strings.Contains(s, "%") {
|
||||
f.Badf(call.Pos(), "possible formatting directive in %s call", name)
|
||||
}
|
||||
}
|
||||
|
1
src/cmd/vet/testdata/print.go
vendored
1
src/cmd/vet/testdata/print.go
vendored
@ -133,6 +133,7 @@ func PrintfTests() {
|
||||
fmt.Printf("%.*s %d %g", 3, "hi", 23, 'x') // ERROR "arg 'x' for printf verb %g of wrong type"
|
||||
fmt.Println() // not an error
|
||||
fmt.Println("%s", "hi") // ERROR "possible formatting directive in Println call"
|
||||
fmt.Println("0.0%") // correct (trailing % couldn't be a formatting directive)
|
||||
fmt.Printf("%s", "hi", 3) // ERROR "wrong number of args for format in Printf call"
|
||||
_ = fmt.Sprintf("%"+("s"), "hi", 3) // ERROR "wrong number of args for format in Sprintf call"
|
||||
fmt.Printf("%s%%%d", "hi", 3) // correct
|
||||
|
Loading…
Reference in New Issue
Block a user