golangci-lint v2.x で発生した `--out-format` エラーと v1.55.2 へのダウングレード対応
Posted:
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 に切り替えたい場合は、ツールの対応状況を確認してから移行することをおすすめします。