https://daisuzu.hatenablog.com/entry/2022/08/17/212152
internal/lsp/source/options.go
のdefaultAnalyzers()が返すmapに自作のAnalyzerを追加してgo install
すれば使えるようになる*1。
用途としてはチームのコーディング規約をtextDocument/diagnostic
でチェックしたり、チェックに引っかかったコードの修正や一部だけ実装したコードの続きを生成するtextDocument/codeAction
を実行したりなど。
今まではCIで独自Analyzerとreviewdog + action-suggesterを用いてチェックやコード修正を行っていたものを、goplsに組み込むことによってより早いコーディングのタイミングで行えるようになった。
もちろん補完やコードジャンプ、コード生成(textDocument/codeLens
)などをカスタマイズしてさらに便利にすることもできるけど、本体の変更に追従するのが大変になりそうなので今のところはやっていない。
Analyzerの追加だけであればコンフリクトのことはほとんど考えなくて良いので定期的にupstreamを取り込むように設定するくらいでメンテナンスに関しては特に問題なさそう。
それにgoplsのCLI版で使えない機能を増やしすぎてしまうと、GoLandなどLSPに対応していないツールと差が開きすぎてしまうのも理由の一つ*2。