「VSCode + Solargraph + RuboCop」の設定方法と動かないときの対処法
これはなに
VSCodeでSolargraphとRuboCopを入れて動かしたい機会がたびたびありますが、毎回動かすまでに手こずるので設定方法やうまく動かないときの対処法をまとめます。
SolargraphとRuboCopで何ができるの?
-
RuboCopの警告をVSCode上にリアルタイムで表示してくれる
-
自動補完をしてくれる
dog.
を打つと、bark
やrun
をメソッドの候補として表示してくれます。
設定方法
Solargraphをインストールする
1. VSCode拡張機能のSolargraphのgemをインストールする
2. システム環境にターミナルで以下のコマンドを実行します。
gem install solargraph
このとき、おそらくrubocopのgemも一緒にインストールされるはずです(これもSolargrpahを動かす際に必要になります)。
3. 静的解析の設定をONにする
まずVSCodeの設定画面を開きます(Command + Shift + P
でコマンドパレットを開き、Open Settings (UI)
を選択します)。
solargraph.diagnostics
の設定をtrue
に変更します。これによってリアルタイムでRuboCopによる警告がVSCode上に表示されるようになります。
基本的な設定は以上です。ここまでやってうまく動かない方はこの下も読んでみてください。
そもそもSolargraphはどういう仕組みで何をやってるの?
エラーが起きたとき、そもそもSolargraphがどういう仕組みでコード補完や静的解析をしているのかをざっくり説明します(ざっくりなので間違っていたらすみません)。
主な登場人物は以下の3人です。
-
vscode-solargraph
- VSCodeにインストールしたSolargraphの拡張機能
-
solargrpah
- gemとしてインストールしたもの
-
rubocop
- gemとしてインストールしたもの
流れとしては、VSCode上で文字を打つと「拡張機能のSolargraph」が「gemのSolargraph」にリクエストを投げ、「gemのSolargraph」がrubocopを実行した結果を「拡張機能のSolargraph」に返し、エラーがあればVSCode上に表示するという流れです。
図示すると以下のとおりです。
ちょうどClientとServerの関係になっており、あまり詳しくないですがLanguage Server Protocolという仕組みが使われているらしいです。
うまく動かないときに確認すること
SolargraphやVSCodeを再起動してみる
Solargraphの再起動をするためには、Command + Shift + P
でコマンドパレットを立ち上げてRestart Solargraph
を実行します。
.rubocop.yml
を消してみる
プロジェクトのルートディレクトリに.rubocop.yml
が保存されている場合、その設定が間違っているかRuboCopのバージョン互換が合っていないのが原因でSolargraphが正常に動かないことがあります。
なので、一度.rubocop.yml
を削除したあとSolargraphを再起動して、VSCode上でRubocopの警告が出るかどうかを確認してみてください。
.rubocop.yml
に書かれている、rubocop関連のgemをインストールする
.rubocop.yml
に以下のように書かれていた場合、それらのgemもインストールしておく必要があります。
require:
- rubocop-rails
- rubocop-performance
上記の例だと、gem install rubocop-rails rubocop-performance
を実行してあらかじめインストールしておく必要があります。
Discussion