概要
ある晴れた日のとある Rails プロジェクトでのできごと。Rubocop のバージョンが少し古かったので、現在の最新版である 0.48.1
に更新しました。そして、rubocop コマンドを実行すると、RSpec のコードの多くで Metrics/BlockLength: Block has too many lines.
という警告が表示されました。
$ bin/rubocop --display-cop-names
spec/models/user_spec.rb:1:1: C: Metrics/BlockLength: Block has too many lines. [35/25]
describe User, type: :model do ...
とはいえ、RSpec は専用の DSL で記述する性質上、どうしても 1 つのブロックあたりの行数が増えてしまいます。そのため、行数を 25 行以下に書き換えるのは現実的ではありません。とはいえ、RSpec のコードで他の規約違反を無視したくはないので、Rubocop の監視対象から外すことはしたくありません。では、RSpec のコードだけ Metrics/BlockLength
を無視するにはどうすればいいでしょうか。
方法
RSpec のコードで無視したい cop の名前が Metrics/BlockLength
だったので、以下の記述を .rubocop.yml
に追加しました。
.rubocop.yml
Metrics/BlockLength:
Exclude:
- 'spec/**/*'