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
