サマリ 7 - (omit!) References to loop variables - appends check for missing values after append new! - buildtag check //go:build and // +build directives update! ※リリースノート記載なし - defers report common mistakes in defer statements new! - directive check Go toolchain directives such as //go:debug defaultJoin! ※リリースノート記載なし - errorsas report passing non-pointer or non-error values to errors.As defaultJoin! ※リリースノート記載なし - framepointer report assembly that clobbers the frame pointer before saving it defaultJoin! ※リリースノート記載なし - ifaceassert detect impossible interface-to-interface type assertions defaultJoin! ※リリースノート記載なし - sigchanyzer check for unbuffered channel of os.Signal defaultJoin! ※リリースノート記載なし - slog check for invalid structured logging calls update! - stringintconv check for string(int) conversions defaultJoin! ※リリースノート記載なし - testinggoroutine report calls to (*testing.T).Fatal from goroutines started by a test defaultJoin! ※リリースノート記載なし - timeformat check for calls of (time.Time).Format or time.Parse with 2006-02-01 defaultJoin! ※リリースノート記載なし
ループ変数への参照問題が解消されたことにより、警告されることがひとつ減りまし た 🎉 Go 1.20 でVetに追加された、以下の警告が役⽬を終えます。 loop variable i captured by func literal (omit!) References to loop variables
frame pointer before saving it 昔から存在はしていましたが、 default 実⾏リストに仲間⼊り。 スタックトレース関連のもので、 以下のようなフレームポインタを破壊するような記述を警告してくれます。 framepointer 21 TEXT ·z1(SB), 0, $0 MOVQ $0, BP // want `frame pointer is clobbered before saving` RET framepointer defaultJoin! ※リリースノート記載なし
conversions 昔から存在はしていましたが、 default 実⾏リストに仲間⼊り。 整数から⽂字列への型変換を警告します。 多くの場合、strconv.Itoa(x) をすべきかと思われます。 x := 41 s := string(x) // NG s := string(rune(x)) // ok stringintconv defaultJoin! ※リリースノート記載なし
goroutines started by a test 昔から存在はしていましたが、 default 実⾏リストに仲間⼊り。 test で記載した goroutine で t.Fatal() しているという警告ですね。 func TestSample(t *testing.T) { var wg sync.WaitGroup wg.Add(1) go func() { defer func() { t.Log("defer") wg.Done() }() t.Fatal("Fatal") t.Log("A") testinggoroutine 26 testinggoroutine defaultJoin! ※リリースノート記載なし