- 公開日:2018年04月15日
- 最終更新日:2018年04月21日
記事概要
プロジェクトへRubocopを導入する記事です。
環境
- centos6.5
- Rails5.2
- ruby2.5.1
- rbenv
Rubocop
Rubocopはコード解析ツールです。
デフォルトでは
Ruby Style Guideで示されているガイドラインが適用されます。
実績
Ruby on RailsでもRubocopでコードチェックを実行しています。
Gemfile修正
Gemfileにrubocopを追記します。
group :development do gem 'rubocop', require: false end
インストールします。
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の挙動をコントロールできます。
cd ${project_root} $ touch .rubocop.yml
作成した.rubocop.ymlは空なので、railsの.rubocop.ymlの内容をコピーして貼り付けます。
特別な理由がない限り、基本はRailsと同じ設定にすると良いでしょう。
.rubocop.ymlはRuby2.5.1とRails5.2の環境に合わせます。
// .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コマンドの実行で出力されたエラーを修正します。
シングルクォーテーションをダブルクォーテーションへ変換する必要があるので、以下のコマンドを実行します。
$ rubocop -a
上記のコマンドを実行すると他のエラーも修正されるので、実行前にgitで状態を保存しておきましょう。
速度改善
上記で設定したrailsの.rubocop.ymlの設定だと、rubocopコマンドの実行に時間がかかるので改善します。
.rubocop.ymlのExcludeの設定を変更します。
DisabledByDefault: true Exclude: - 'tmp/**/*' - 'public/**/*' - 'vendor/**/*' - 'log/**/*' - 'actionpack/lib/action_dispatch/journey/parser.rb'
rubocopで検査非対象フォルダの配下を/**/*と設定するのがポイントです。
実行して確認します。
$ 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は開発速度に優れたフレームワークですが、ソースコードがカオスになりやすい欠点があります。プロジェクト立ち上げ時は良いのですが、プロジェクトが長くなればなるほどコードを読むのがきつくなります。Rubocopを導入して、ソースコードの可読性を保つようにしましょう。
長い目で見ると、Rubocopを使った方が開発速度は上がるはずです。
以上です。
0 件のコメント:
コメントを投稿