SublimeText3でRuboCopを利用しよう


SublimeText3にパッケージ"SublimeLinter-rubocop"を導入した際の「ハマリどころ」と実際のインストールについて説明します。

はじめに...

Rubocop は Ruby の静的コード解析ツールです。Ruby Style Guide で概説されているガイドラインの多くが強制されるでしょう。
参照:RuboCop なるものがあるらしい

導入して捗るの?

RuboCopそのものは、

Terminal
$ gem install rubocop

上記のようにインストールすれば使用できるようになりますが、毎回、コマンドを打つのも大変なので、SublimeText3のパッケージ"SublimeLinter-rubocop"を導入してチェックしてもらおうというお話です。

前提条件

  • OS X EI Capitan バージョン10.11.6
  • RuboCopインストール済み
  • RuboCopの .rubocop.yml はプロジェクトのルートディレクトリ配下に作成済み
  • SublimeText3にパッケージ"SublimeLinter"導入済み

SublimeLinterが導入されていないとSublimeLinter-rubocopは動きません。

インストール方法(+ハマリポイント)

SublimeText3に Package Control: Install Package を利用し、SublimeLinter-rubocopをインストールしたものとして説明します。

SublimeText3のメニューバーから

基本設定>PackageSettings>SublimeLinter>Settings-User

を選択して下記のファイルを開きます。

SublimeLinter.sublime-settings
{
    "user": {
        "debug": true, //SublimeText3のconsoleでデバッグをする
        "delay": 0.25,
        "error_color": "D02000",
        "gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme",
        "gutter_theme_excludes": [],
        "lint_mode": "background",
        "linters": {
            "rubocop": {
                "@disable": false,
                "args": [
                    "", //<== --configと記載
                    ""  //<== 使用したい.rubocop.ymlのpathを記載
                ],
                "excludes": []
            },
            "ruby": {
                "@disable": false,
                "args": [],
                "excludes": []
            }
        }, //以下省略
}

ここで上記のコメントで記載しているように --config.rubocop.ymlのpath を設定しなければならないのですが、正しいpathを設定しておらず、SublimeLinter-rubocopが正常に動きませんでした。

もし、 SublimeLinter.sublime-settings のUserファイルが白紙の場合は、

SublimeText3のメニューバーから

基本設定>PackageSettings>SublimeLinter>Settings-Default

を選択してDefaultのファイルをコピペして利用すれば良いです。

書き換えが終わったら、SublimeText3を再起動してください。

実際に動かしてみた

文字 意味
. Clean(問題なし) なし
C Convention(慣習違反) 黄色
W Warning 黄色
E Error 赤色
F Fatal 赤色

リアルタイムで警告を表示してくれるので、表示された警告に関しては潰していきましょう。他の方にコードレビューを受ける前に最低限のミスはなくせることが導入の一番のメリットだと思います。

これでもダメなら...

SublimeText3のconsoleにてエラー原因の調査を行ってみるのも手かと思います。

SublimeLinter.sublime-settingsdebugをtrueにして、SublimeTextを再起動します。
View > Show Console で表示されたエラーメッセージを確認します。
参照:エラーの原因を調査する

参考記事