初学者の備忘録
初学者の備忘録です。今回はRubocop編
Rubocopとは
プロジェクトに記述されているRuby(Rails)のコードがコーディング規約に遵守されているかチェックを行う、静的コード解析ツールです。
コーディング規約とは?
開発をする際にコードをどのように書くのかを規約として設けることで、コードに統一性を持たせることを目的とします。
規約の一例としては命名規則や禁止事項などが挙げられます。
らしいのですが難しいので私はインデントや全角などを検出してくれるものだと認識してます。そのためにはルールを変えなければいけないのですが、チャットGDPとかに聞くとルールのコードを教えてくれます。
導入
「Gemfile」のdevelopmentグループに以下の記述を追記します。
group :development do
:
:
+gem 'rubocop', require: false
+gem 'rubocop-performance', require: false
+gem 'rubocop-rails', require: false
+gem 'rubocop-minitest', require: false
+gem 'rubocop-packaging', require: false
+gem 'rubocop-rspec'end
【2】 インストール
Gemを有効化するためにインストールします。
$ bundle install
【3】 設定ファイル
設定ファイルを作成していきます。ここの記述でルールが決まります。
$ bundle exec rubocop --auto-gen-config
【4】 .rubocop.yml編集
.rubocop_todo.ymlと.rubocop.ymlが生成されます。
.rubocop.ymlを次のように編集します。
require:
- rubocop-minitest
- rubocop-packaging
- rubocop-performance
- rubocop-rails
# 全て
AllCops:
# すべてのCopをデフォルトで無効にする
Enabled: false
# インデントに関する指摘を有効にする
Layout/IndentationWidth:
Enabled: true
Layout/IndentationConsistency:
Enabled: true
# 全角文字の存在に関する指摘を有効にする
Style/AsciiComments:
Enabled: true
導入は以上です。お疲れ様でした。
実装
実際に使用してみましょう。
ターミナルにコマンドを入力します。
このコマンドで全てのファイルを確認し、違反を検出してくれます。
$ bundle exec rubocop
自動修正コマンド
$ bundle exec rubocop -a
自動修正コマンドのさらに強いコマンド
$ bundle exec rubocop -A
ファイル単位
$ bundle exec rubocop -a {解析対象ファイル}
フォルダ単位
$ bundle exec rubocop -a {解析対象フォルダ}
差分単位
$ bundle exec rubocop -a $(git diff $(git merge-base origin/master HEAD) --diff-filter=d --name-only)
*自動修正は思った修正と違う場合がありますので注意してください。自動修正コマンド実行する前にコミットしておくことをおすすめします。
*警告が出る場合
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
警告が出ましたら下記のコマンドを入力してください。
$ bundle update --bundler
以上です。