🤖
rubocop コード字数制限について
内容
以前テストコードを追記した際にrubocopで設定されているコード行数制限に引っかかってしまい、CIでコケるという事象が発生した。
この際指定ファイルのみ行数上限を引き上げたくなったため、rubocopの設定緩和について記します。
rubocop:ファイル行数制限設定
各ファイルに対して802行までという制約をつける場合
Metrics/BlockLength:
Max: 802
この記述がある場合、各ファイルは802行までという制約がかかり、publishするとCIでコケるようになる
rubocopの設定でファイル行数制限を緩和する方法
各ファイルに対して行数制限を引き上げる
- 指定ファイルの制限を無視する
Metrics/BlockLength:
Exclude:
- "spec/models/users/user_spec.rb"
- 指定ファイルのみ設定を変更する
Metrics/BlockLength:
Include:
- "spec/models/users/user_spec.rb"
Max: 900 # 例: 900行まで許容
- テストコード内で一部を行数にカウントしない
# rubocop:disable Metrics/BlockLength
describe 'User', seeded_db: false do
# テストコード...
end
# rubocop:enable Metrics/BlockLength
それぞれのメリデメ
- 指定ファイルの制限を無視する
メリット : コード量が不明な場合、今後も増えていくことが考えられる場合に一旦引き上げておくことができる
デメリット: 制限がなく書けてしまうので、ルール化されていないとも言える
- 指定ファイルのみ設定を変更する
メリット : yamlファイル内の設定を書く場所に記載できるので、設定をまとめて記述できる
デメリット: 設定するファイル数が増えるとyamlファイルが汚くなる懸念がある
- テストコード内で一部を行数にカウントしない
メリット : yamlファイルを汚さずに設定をすることができる
一旦書いているテスト、後に消すと想定されるテストコードに対して有効
デメリット: 設定記述をテストコードに残してしまうので、テストコード自体が汚れてしまう懸念がある
その他の方法: 全体ファイルに対して行数制限を引き上げる
各ファイルに対して900行までという制約をつける場合
Metrics/BlockLength:
Max: 900
この場合はすべてのファイルの上限が引き上がってしまう。

「N organic」、「FAS」等の化粧品ブランドを展開している株式会社シロクのエンジニアブログです。 ECサイトを中心とした自社サービスの開発・運用を行っています。 sirok.jp/norganic
Discussion