はじめに
Rubocopとは、Rubyの静的コード解析ツール。
ruby-style-guide
に従って、ソースコードの修正・改善点を指摘してくれます。
また、インデントのずれや、不必要なスペース・改行などは特定のコマンドを打つことで自動で修正してくれるので、自分にとってはもちろん、他の人が見ても読みやすいコードに整形することが出来ます。
※あくまで初学者の観点で設定等を決めています。
導入
gem 'rubocop', require: false
bundle install
使ってみる
bundle exec rubocop
これらがRubocopが検知した修正点になります。
しかし、デフォルトのルール全てに従っていると、コードを書く際に気を配る点があまりにも増えてしまうので、自分やチーム内で許容するルールを設定することが出来ます。
設定をカスタマイズする
アプリケーションのディレクトリに
.rubocop.yml というファイルを作成し、その中に設定を記述します。
AllCops:
# 除外するディレクトリを設定。例えばschemaやmigrationファイルなどは書き直すことが少ないため、検知対象外に
Exclude:
- bin/*
- db/schema.rb
- node_modules/**/*
- db/migrate/*
- vendor/**/*
# Rails向けのチェックを行う
Rails:
enabled: true
# "Missing top-level class documentation comment."を無効
Style/Documentation:
Enabled: false
# "Prefer single-quoted strings when you don't need string interpolation or special symbols."を無効
Style/StringLiterals:
Enabled: false
# "Line is too long"を無効
Metrics/LineLength:
Enabled: false
#'frozen_string_literal: true'を無効
Style/FrozenStringLiteralComment:
Enabled: false
など様々な設定が可能です。
デフォルトの設定を参考にいろいろいじってみようと思います。
設定後、もう一度
bundle exec rubocop
修正する
bundle exec rubocop --auto-gen-config
.rubocop.todo.yml というファイルが自動生成されます。
これにより、一時的に修正点を全て無効とみなされます。
ここでrubocopを実行すると、修正点がない状態になります。
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
一例として、上記のような記述があります。
この記述を削除すると、該当部分の無効化していた修正点が復活します。
早速修正して行きますが、
Cop supports --auto-correct.
という記述がある場合、Rubocopが以下のコマンドで自動で修正してくれます。
bundle exec rubocop -a
今回修正したのは、Gemfileのgemの記述がアルファベット順になっていないのを正しい順番に並べ替えました。
まとめ
1.gemを導入し、.rubocop.yml
に設定をカスタマイズする
2.bundle exec rubocop --auto-gen-config
を実行し、
.rubocop.todo.yml
を生成する。
3..rubocop.todo.yml
に書かれている記述を1つ消し、修正する
4.3.を繰り返す。
実際の現場では、自動化されていてあまり自分で修正することはなさそうですが、
まだまだ初学者ですので、一つ一つ改善していって規約を確認し、
初めから読みやすいコードを書けるエンジニアになれるよう心がけます。