RubyMine や IntelliJ IDEA でも RuboCop を使いたい
IntelliJ の RuboCop サポート
RubyMine は RuboCop はネイティブでサポートしていて、2017.1 バージョンから実装されている。 IntelliJ IDEA はプラグインとして Ruby の機能を提供しているが、こちらも同様に RuboCop をサポートしていて、2017.1 バージョンから実装している。
- RubyMine: RuboCop - Help | RubyMine
- IDEA: RuboCop - Help | IntelliJ IDEA
余談だけど、ネイティブでサポートされるまでは、個人開発のプラグインがもてはやされていました。
- RubyMineとRuboCopを連携させる - Qiita
- sirlantis/rubocop-for-rubymine: DEPRECATED: RubyMine supports RuboCop now
コード検査機能への統合
RuboCop サポートは IntelliJ のコード検査機能(Inspection)の一つとして統合されている。 RuboCop はバックグラウンドで実行されて、エラーがある場合には電球アイコンで該当箇所が示される。
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 のチェックボックスを外せばよい。
注意点としては、RuboCop が SDK 環境以下にインストールされている必要があること。 IntelliJ はプロジェクトごとに SDK をパス指定する仕様になっているが、これが RuboCop をインストールした環境と違っている場合には、IntelliJ がこれを認識することができない。
この問題は bundler や rbenv などで、複数の環境を使い分けているプロジェクトやシステムで起こりやすい。 IntelliJ から見えていないことが原因なので、一般に SDK の指定を直したり bundler のインストールパスをプロジェクトの設定に追加することで対処する。