2018年4月15日日曜日

【Rails】プロジェクトにRubocupを導入する

  • 公開日:2018年04月15日

記事概要

Rubocupの設定方法の記事です。

環境

  • centos6.5
  • Rails5.2
  • ruby2.5.1
  • rbenv

Gemfile修正

Gemfileにrubocopを追記します。

{project_folder}/Gemfile

group :development do
  gem 'rubocop', require: false
end

インストールします。

terminal

cd {project_root}
bundle install

Fetching rainbow 3.0.0
Installing rainbow 3.0.0
Fetching parallel 1.12.1
Installing parallel 1.12.1
Fetching parser 2.5.1.0
Installing parser 2.5.1.0
Fetching powerpack 0.1.1
Installing powerpack 0.1.1
Fetching ruby-progressbar 1.9.0
Installing ruby-progressbar 1.9.0
Fetching unicode-display_width 1.3.0
Installing unicode-display_width 1.3.0
Fetching rubocop 0.54.0
Installing rubocop 0.54.0

.rubocop.yml

.rubocop.ymlファイルを作成します。.rubocop.ymlはRuboCopの挙動をコントロールできます。

terminal

$ touch .rubocop.yml

作成した.rubocop.ymlは空なので、railsの.rubocop.ymlの内容をコピーして貼り付けます。
特別な理由がない限り、基本はRailsと同じ設定にすると良いでしょう。

.rubocop.ymlはRuby2.5.1とRails5.2の環境に合わせます。

{project_folder}/.rubocop.yml

// .ruby-version ファイルからRubyのバージョンは読み込む。
#TargetRubyVersion: 2.5削除

Layout/** → Style/**に置換

Style/SpaceBeforeFirstArg: → Lint/SpaceBeforeFirstArg:

// コメントアウト
#CustomCops/RefuteNot 

// コメントアウト
#Style/EmptyLineAfterMagicComment:
#  Enabled: true

// コメントアウト
#Style/SpaceAroundKeyword
#  Enabled: true

// コメントアウト
#Style/FrozenStringLiteralComment

// コメントアウト
// http://www.rubydoc.info/github/bbatsov/RuboCop/RuboCop/Cop/Lint/BlockAlignment
#EnforcedStyleAlignWith

rubocopコマンドの実行で出力されたエラーを修正します。
シングルクヴォートからダブルクヴォートへの変換は以下のコマンドで実行します。

terminal

$ rubocop -a

他のエラーも修正されるので、実行前にgitで状態を保存しておきましょう。

速度改善

railsの.rubocop.ymlだとrubocopコマンドが遅いので改善します。

{project_folder}/.rubocop.yml

  DisabledByDefault: true
  Exclude:
    - 'tmp/**/*'
    - 'public/**/*'
    - 'vendor/**/*'
    - 'log/**/*'
    - 'actionpack/lib/action_dispatch/journey/parser.rb'

/**/*と設定するのはコツです。
実行して確認します。

{project_folder}/.rubocop.yml

$ rubocop
warning: parser/current is loading parser/ruby21, which recognizes
warning: 2.1.7-compliant syntax, but you are running 2.1.6.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
Inspecting 48 files
................................................

48 files inspected, no offenses detected

完了です。

まとめ

Railsは開発速度に優れたフレームワークですが、ソースコードがカオスになりやすい弱点があります。Rubocupを導入して、ソースコードの可読性を保つようにしましょう。
長い目で見ると、Rubocupを使った方が開発速度は上がるはずです。

以上です。

PICK UP オススメ書籍

運営サイト


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加
Related Posts Plugin for WordPress, Blogger...