goplsに独自Analyzerを組み込む

internal/lsp/source/options.godefaultAnalyzers()が返すmapに自作のAnalyzerを追加してgo installすれば使えるようになる*1

用途としてはチームのコーディング規約をtextDocument/diagnosticでチェックしたり、チェックに引っかかったコードの修正や一部だけ実装したコードの続きを生成するtextDocument/codeActionを実行したりなど。

今まではCIで独自Analyzerとreviewdog + action-suggesterを用いてチェックやコード修正を行っていたものを、goplsに組み込むことによってより早いコーディングのタイミングで行えるようになった。

もちろん補完やコードジャンプ、コード生成(textDocument/codeLens)などをカスタマイズしてさらに便利にすることもできるけど、本体の変更に追従するのが大変になりそうなので今のところはやっていない。
Analyzerの追加だけであればコンフリクトのことはほとんど考えなくて良いので定期的にupstreamを取り込むように設定するくらいでメンテナンスに関しては特に問題なさそう。
それにgoplsのCLI版で使えない機能を増やしすぎてしまうと、GoLandなどLSPに対応していないツールと差が開きすぎてしまうのも理由の一つ*2

*1:gopls/v0.9.4の場合

*2:今のチームは半分近くのメンバーがGoLandを使っているので