Rubocopを使ったデバックのやり方
- 1.現在の違反をすべて記録した上で、いったん違反では無いことにする
- 2.記録した違反のうち1つを、違反していることに戻す
- 3.その違反を解消する
- 要するに
.rubocop.todo.yml
から違反を消しbundle exec rubocop
を実行 → 修正
rubocop 通常実行コマンド
bundle exec rubocop
大量に出てくるのがコード規約違反!
以下のコマンドを実行すると、規約違反の一覧が表示される.rubocop.todo.yml
が生成される。
コマンド実行後は.rubocop.yml
の一番上にinherit_from: .rubocop_todo.yml
と追加される。
これがあると規約違反が読まれない。
bundle exec rubocop --auto-gen-config
以下のコマンドを実行すると、自動である程度を修正してくれる。
bundle exec rubocop -a
.rubocop.yml
をルートディレクトリに作成して、設定を作れる。
最後に自分の使用例を載せます!
.rubocop.yml
inherit_from: .rubocop_todo.yml
AllCops:
# 除外するディレクトリ(自動生成されたファイル)
# デフォルト設定にある"vendor/**/*"が無効化されないように記述
Exclude:
- 'bin/*'
- 'lib/*'
- 'node_modules/**/*'
- 'db/**/*'
- 'vendor/**/*'
- 'config/**/*'
- 'script/**/*'
- 'test/**'
# Rails向けのRails copsを実行。"rubocop -R"と同じ
Rails:
enabled: true
# "Missing top-level class documentation comment."を無効
Style/Documentation:
Enabled: false
# コメントにはアスキー記号のみを使用してください
AsciiComments:
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
# join_roomの記述が引っかかる為。省略は難しい
Etrics/MethodLength:
Enabled: true
Max: 18
#'frozen_string_literal: true'を無効
Style/FrozenStringLiteralComment:
Enabled: false
# tweet_searchやtestのnamespaceが引っかかるため
Style/ClassAndModuleChildren:
Enabled: false
# 線が多い長いブロックは避けてください
Metrics/BlockLength:
Exclude:
- 'spec/**/*'
# NotificationsControllerが22文字の為
Metrics/AbcSize:
Enabled: true
Max: 23
# if~else~endの方がひと目で分かりやすいと思うためfalse。詳細は以下を参照
# https://docs.rubocop.org/rubocop/cops_style.html#styleguardclause
Style/GuardClause:
Enabled: false
# devise_helperの関係のため
Naming/HeredocDelimiterNaming:
Enabled: false