RuboCopを使う
RuboCopなるものを始めて使ってみました。
このエントリーではRubocopをインストールしてから使うまでの手順と、RubocopをVSCodeで使うための手順について説明します。
RuboCop
Rubyで書かれたコードが、コーディング規約にそって書かれているかをチェックする解析ツール。
こういったツールを使うことでコードの可読性を高めたり、チーム内のコーディングルールを簡単に適用することができる。
私は使っていないけど、auto-correct という機能を使えば、チェックだけではなくRuboCopが認識してくれる範囲で自動で修正してもらうこともできてさらに便利。
インストール
以下のコマンドを実行するだけ。
$ gem install rubocop
実行
さっそくRuboCopを実行してみる。 チェックしたい.rbファイルがあるプロジェクトに移動して、以下のコマンドを実行。
$ rubocop
設定ファイル(.rubocop.yml)について
コーディング規約は「.rubocop.yml」というファイルに書かれており、インストール時に一緒に配置される*1。
Rubocopにデフォルトで設定されているコーディング規約はけっこう厳しいらしく、そのまま使う人は少ないということ。
コーディング規約を自分で変更したい場合は以下のいずれかの方法で変更できる。
- 既にある.rubocop.ymlを開いて設定を変更する。
- .rubocop.ymlを新しく作成しプロジェクトルートに配置する。*2
設定ファイルを変更する
設定ファイルの変更を実際に行う。
いくつかのブログを見てみたところ、「.rubocop.ymlを新しく作ってプロジェクトルートに配置する」というやり方が多いようなのでこの方法で変更してみる。*3
$ wget https://raw.githubusercontent.com/rails/rails/master/.rubocop.yml
wget
の引数にはGitHubの画面の「Raw」ボタンを押して表示されるURLを使う。
- 取得した.rubocop.ymlをプロジェクトルートに配置。今回の例では
~/RubyTutorial/
に配置。
これでOK。のはずなんだけどプロジェクトルートに配置したら、こっちの.rubocop.ymlのチェックが適用されているということはどうやって確認するのだろう。
今回は実行してみてチェックの方法が変わっているかどうかで確認したが、もっと簡単にわかるのだろうか?
RuboCopをVSCodeで使う
私はRubyのコードをVSCodeで書いているので、VSCodeでも使えるようにする。
インストール
拡張機能からruby-rubocop 0.8.0
をインストールして有効にする。
設定
[基本設定] - [設定] - [拡張機能]を開いて、以下の画面のように設定。
④の「Execute Path」は以下のコマンドで確認できるので、出力結果のパスをそのまま(…shims/まで)貼ればよい。
$ which rubocop /Users/izumi/.rbenv/shims/rubocop
実行
インストールと設定が完了すると、保存時にチェックが実行されるようになる。
おまけ
RuboCopを導入したら、Missing frozen string literal comment.
の警告が必ず出てしまうようになってしまった…。
結果として# frozen_string_literal: true
というマジックコメントを先頭に入れることで解決できた。
これは Ruby 3.0 では文字列リテラルがデフォルトで freezeになる予定であり、これに先駆けて今から文字列リテラルをfreezeにしておく(=このマジックコメントを入れる)ようにしようということで、RuboCopの設定でチェックが有効になっていることが多いのだとか。
参考
- インストール
- .rubocop.ymlの内容
- VSCodeの設定
[Mac]VScode で ruby-rubocop が動かなくなったら executePath を設定してみよう - Qiita
- Missing frozen string literal comment.