🚀

「VSCode + Solargraph + RuboCop」の設定方法と動かないときの対処法

2022/08/13に公開

これはなに

VSCodeでSolargraphとRuboCopを入れて動かしたい機会がたびたびありますが、毎回動かすまでに手こずるので設定方法やうまく動かないときの対処法をまとめます。

SolargraphとRuboCopで何ができるの?

  • RuboCopの警告をVSCode上にリアルタイムで表示してくれる

  • 自動補完をしてくれる

    dog.を打つと、barkrunをメソッドの候補として表示してくれます。

設定方法

1. VSCode拡張機能のSolargraphをインストールする

2. システム環境にSolargraphのgemをインストールする

ターミナルで以下のコマンドを実行します。

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