RubyMine や IntelliJ IDEA でも RuboCop を使いたい

IntelliJ の RuboCop サポート

RubyMine は RuboCop はネイティブでサポートしていて、2017.1 バージョンから実装されている。 IntelliJ IDEA はプラグインとして Ruby の機能を提供しているが、こちらも同様に RuboCop をサポートしていて、2017.1 バージョンから実装している。

余談だけど、ネイティブでサポートされるまでは、個人開発のプラグインがもてはやされていました。

コード検査機能への統合

RuboCop サポートは IntelliJ のコード検査機能(Inspection)の一つとして統合されている。 RuboCop はバックグラウンドで実行されて、エラーがある場合には電球アイコンで該当箇所が示される。

f:id:msh5_h:20180416233504p:plain

IntelliJ は RuboCop の検査結果をパースして、エディタ上でのグラフィカルな表示に変換している。 ちなみに、RuboCop の severity は IntelliJ のコード検査機能に対して以下のように割り当てられている。

RuboCop の severity IntelliJ の severity
Refactor and Convention Weak Warning
Warning Warning
Error and Fatal Error

RuboCop の検査を有効にする

CLion の GCC などと違って、RubyMine や Ruby プラグインに RuboCop はバンドルされていない。 なので、RuboCop をプロジェクトの SDK 環境に別途インストールする必要がある。

gem install rubocop

基本的に IntelliJ が自動的に RuboCop を認識するので、インストール後は何もしなくても使えるようになる。 機能をオフにしたい場合には、Settings(もしくは Preferences)> Editor > Inspections から RuboCop のチェックボックスを外せばよい。

f:id:msh5_h:20180416233539p:plain

注意点としては、RuboCop が SDK 環境以下にインストールされている必要があること。 IntelliJ はプロジェクトごとに SDK をパス指定する仕様になっているが、これが RuboCop をインストールした環境と違っている場合には、IntelliJ がこれを認識することができない。

この問題は bundler や rbenv などで、複数の環境を使い分けているプロジェクトやシステムで起こりやすい。 IntelliJ から見えていないことが原因なので、一般に SDK の指定を直したり bundler のインストールパスをプロジェクトの設定に追加することで対処する。