概要
bundle exec rubocopを実行した際、ルール違反のファイルを指摘してくれるが、
その中で特定のディレクトリをルール適用対象外とする方法についてメモ。
環境
ruby 3.0.2
rails 6.1.4
mysql 8.0.26
rubocop 1.23.0
rubocop-rails 2.12.4
ルール違反の検出
前提:多数のカラムを持つSampleモデルをrails generateで作成した直後とする。
terminal
# チェックの実行
❯❯❯ bundle exec rubocop
# ルール違反箇所の検出
sample-app/.rubocop.yml: Warning: no department given for MethodLength.
Inspecting 63 files
.............................................................C.
Offenses:
db/migrate/20220119115229_create_sample.rb:2:3: C: Metrics/MethodLength: Method has too many lines. [11/10]
def change ...
^^^^^^^^^^
63 files inspected, 1 offense detected
検出した違反:Metrics/MethodLength
これはメソッドが11行以上ある場合に違反とするもの。
参考
今後もmigrationでは11行以上のメソッドが必要になる可能性がありそうなので、ディレクトリ単位で除外しておきたい
対象外設定方法
.rubocop.ymlに例外として記述する。
.rubocop.yml
# migrationファイルはメソッド行数が11行以上でも許可する
MethodLength:
Exclude:
- 'db/migrate/*' # *でmigrate以下のファイルを全て指定する
db/migrate以下のファイルを、デフォルトの10行制限の対象外とすることができた。
※特定のファイルを対象外にしたい場合は、そのままファイル名まで指定すればOK
参考
最後に
より良い方法や間違い等ありましたらご指摘いただけますと幸いです!