Ruby
RuboCop

RSpec のコードで Rubocop の "Block has too many lines." という警告を無視したい

More than 1 year has passed since last update.


概要

ある晴れた日のとある 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/**/*'


参考