LoginSignup
2
0

More than 3 years have passed since last update.

【Rails】Rubocopによるコード解析と修正の方法(airbnb設定)

Posted at

Rubocopとは

Ruby(Rails)のコードが、コーディング規約に則っているか解析し、修正までしてくれるgem(=静的コード解析ツール)。
*開発現場では、コードの可読性や統一性を保つために、企業やプロジェクト単位で「コードの書き方のルール(コーディング規約)」が設けられていることが多い。

Rubocopには様々な設定がある

Rubocopが解析する際の基準となるコーディング規約は、上述の通り、あくまで企業やプロジェクト単位で決められたルールなのでバラバラですよね。

そんな中、今回はairbnbで使用されている設定を使用します。

準備

  1. Gemfileに以下追記 + bundle install

    Gemfile
    group :development do
    #中略
      gem 'rubocop-airbnb'
    end
    
  2. 設定ファイルの作成
    アプリケーションフォルダ配下(appと同じ階層)に、.rubocop.yml、.rubocop_airbnb.ymlを作成。

  3. 設定ファイルの編集

.rubocop.yml
inherit_from:
  - .rubocop_airbnb.yml

#ここにはrubocopでコード解析したくないファイルやフォルダを指定
AllCops:
  Exclude:
    - 'db/**/*'
    - 'bin/*'
    - 'config/environments/*'
    - 'config/application.rb'
    - 'config/initializers/*'
    - 'config/spring.rb'
    - 'lib/tasks/*'
    - 'vendor/**/*'
    - 'path/ruby'
rubocop_airbnb.yml
require:
  - rubocop-airbnb

実行

1. 違反箇所の解析

bundle exec rubocop —-require rubocop-airbnb

2. 違反箇所の修正

基本的には、検証で使用したコマンドに-aオプションをつけて、解析対象を指定すれば良いだけ。

  • ファイル・フォルダ指定:bundle exec rubocop --require rubocop-airbnb -a {解析対象ファイルorフォルダ}

  • origin/mainと差分があるファイルを指定:bundle exec rubocop --require rubocop-airbnb -a $(git diff $(git merge-base origin/master HEAD) —diff-filter=d —name-only)

最後に

-aオプションで自動修正してくれる違反は全てではありません。また、公式ドキュメントでも-aは実験的オプションとありますので、使用には注意してください。

2
0
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
2
0