0
1

More than 1 year has passed since last update.

Rubocop

Posted at

初学者の備忘録

初学者の備忘録です。今回はRubocop編

Rubocopとは

プロジェクトに記述されているRuby(Rails)のコードがコーディング規約に遵守されているかチェックを行う、静的コード解析ツールです。

コーディング規約とは?
開発をする際にコードをどのように書くのかを規約として設けることで、コードに統一性を持たせることを目的とします。
規約の一例としては命名規則や禁止事項などが挙げられます。

らしいのですが難しいので私はインデントや全角などを検出してくれるものだと認識してます。そのためにはルールを変えなければいけないのですが、チャットGDPとかに聞くとルールのコードを教えてくれます。

導入

「Gemfile」のdevelopmentグループに以下の記述を追記します。

Gemfile

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を次のように編集します。

qiita.rb
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

以上です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1