Go 1.18 と Generics と Linter

no extension

予測して然るべきであったが Go 1.18 に組み込まれた Generics と既存の linter の間でトラブルが続出しているらしい。

私も大変お世話になっている Go の代表的な総合 linter である golangci-lintv1.45 で暫定的な対応を行ったようだ。

So I added a new configuration option inside the run section.
We will not have to remove this option in the future because we will be able to use it for some linters that have a Go version option.

An example:

run:
    go: 1.18

By default, the supported Go version will be go1.17 because it allows us to run all our tests without a huge rewrite.

If you set the version to go1.18, the following linters will be inactive:

  • bodyclose
  • contextcheck
  • gosimple
  • nilerr
  • noctx
  • rowserrcheck
  • sqlclosecheck
  • staticcheck
  • stylecheck
  • tparallel
  • unparam
  • unused
  • wastedassign

この説明にあるように .golangci.yaml ファイルに

run:
    go: 1.18

の記述を入れることで Go 1.18 に対応していない linter を無効にしてくれるようだ。 あとは各 lint パッケージが 1.18 に対応してくれることを気長に待つしかないか。

なお Generics の機能を使わないのなら今回の件は気にしなくてよい(笑)

あと golangci-lint-action もいつの間にか v3 に上がってるな。 見落としてたかなぁ。 この辺はおいおい検証しよう。

参考図書

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)