golangci-lint v2.x で発生した `--out-format` エラーと v1.55.2 へのダウングレード対応

golangci-lint v2.x で発生した --out-format エラーと v1.55.2 へのダウングレード対応

はじめに

Go の静的解析ツール golangci-lint を Neovim や VS Code で使っている際、以下のようなエラーが発生しました:

Error: unknown flag: --out-format

このエラーの原因と対応、そして環境に適したインストール方法についてまとめます。

エラーの原因

2024年3月以降、golangci-lint の v2 系(例:v2.0.2)がリリースされました。このバージョンでは、内部構成が大幅にリファクタされ、従来の CLI オプション(--out-format など)が変更・削除されています。

そのため、VS Code や Neovim のプラグインが --out-format を使おうとすると、互換性のないエラーになります。

参考:

解決策:安定版 v1.55.2 にダウングレードする

✅ インストール手順

まず、誤ってインストールされた v2.x を削除(任意):

rm /mnt/nfs/home/exampleuser/go/Linux/x86_64/bin/golangci-lint

次に、v1.55.2 を明示してインストール:

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh \
  | sh -s -- -b /mnt/nfs/home/exampleuser/go/Linux/x86_64/bin v1.55.2

✅ バージョン確認

golangci-lint --version

出力例:

golangci-lint has version 1.55.2 built from ...

なぜ GOBIN をカスタマイズしていたのか?

私の環境では、アーキテクチャ(x86 or arm)ごとにバイナリの配置先を分けたいため、GOBIN を以下のように指定していました:

GOBIN: /mnt/nfs/home/exampleuser/go/Linux/x86_64/bin

そのため、install.sh スクリプトでは -b オプションで明示的に出力先を指定する必要がありました。

おわりに

現時点(2025年4月)では、VS Code や Neovim ツールの対応状況は不明ですが、v2.x への移行はまだ早いかもしれません。特に、--out-format オプションを使用している場合は注意が必要です。 早期に v2.x に切り替えたい場合は、ツールの対応状況を確認してから移行することをおすすめします。

link