saka2jp
@saka2jp (坂津 潤平)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

静的解析ツールと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-lintgopls の設定を共通化、もしくは同期させる標準的な方法、golangci-lintgopls をうまく併用するためのベストプラクティスを知りたいです。

共通化できる部分に関しては力技・自力で共通化するしかないでしょうか?もしよい方法をご存知の方がいればご教授ください。
もしくは、他の静的解析ツールであれば gopls との相性がよいなどありますか?

最終的に実現したいことは、エディタにてLSPの自動フォーマットやアノテーション(修正の提案)といった恩恵が受けられて、最終的に同様の設定で静的解析をするということです。

調査した資料

1

1Answer

goplsで設定可能なlinterを地道に調査して、golangci-lintで地道にenableにするしかないか?

0Like

Your answer might help someone💌