go vetでprintfuncsオプションを使った
go vet
コマンドはPrintfのようなメソッドに対してフォーマットで表示する変数の数とその引数の数が一致しない場合(以下参照)にチェックしてくれる。
fmt.Printf("%v, %v\n", "test")
しかし、例えば標準logパッケージをラップするパッケージを作った際に、同様にフォーマットを引数で受け取るメソッド(以下、Debugf
メソッド)を定義しても上記と同様のチェックをgo vet
コマンドはデフォルトでは行ってくれない。
package testlog ... func Debugf(format string, v ...interface{}) { l.Output(2, fmt.Sprint("[DEBUG] ", fmt.Sprintf(format, v...))) }
ここで、Debugf
メソッドに対しても同様のチェックを行うために-printfuncs
オプションを使用する。具体的には以下のようにオプションを設定すればDebugf
メソッドに対してもチェックをしてくれる。
go vet -printfuncs Debugf ./...
なお、複数メソッドをオプションに追加したい場合は,
で繋ぐといい。