静的解析ツールとgoplsをうまく併用するためのベストプラクティスを知りたいです
Q&A
Closed
解決したいこと
静的解析は golangci-lint
を利用して、デフォルトで有効なlinterを有効化しています。
golangci-lint
は静的解析ツール(のaggregator)、gopls
はLSPですが、部分的に競合してしまう設定があります。
例えば、gofumpt
の設定が gopls
はfalseで、golangci-lint
はtrueだった場合、エディタでは gofumpt
の自動フォーマットはされませんが、golangci-lint
を実行した際に gofumpt
で指摘をくらってコケます。
逆の場合(gofumptの設定がgoplsはtrueで、golangci-lintがfalse)は、golangci-lint
がコケることはないですが、同じ gofumpt
なのに設定が異なるのは望ましいのか個人的には疑問が残ります。
この競合を解決するためには、両方 gofumpt
をtrue(、もしくはfalse)とすることだと思いますが、設定ファイルが異なるため設定内容を同期するメンテナンスコストがかかります。
また、golangci-lint
にはあるが gopls
にはない設定(逆も然り)があり、そもそも設定を共通化できないケースもあります。
上記を解決するべく半日ほど調査しましたが、有効な解決策が得られませんでした。
golangci-lint
と gopls
の設定を共通化、もしくは同期させる標準的な方法、golangci-lint
と gopls
をうまく併用するためのベストプラクティスを知りたいです。
共通化できる部分に関しては力技・自力で共通化するしかないでしょうか?もしよい方法をご存知の方がいればご教授ください。
もしくは、他の静的解析ツールであれば gopls
との相性がよいなどありますか?
最終的に実現したいことは、エディタにてLSPの自動フォーマットやアノテーション(修正の提案)といった恩恵が受けられて、最終的に同様の設定で静的解析をするということです。