LoginSignup
8

More than 3 years have passed since last update.

rubocop --auto-gen-config で、LineLengthのMaxを変更せず指摘に該当するファイルをexcludeする

Posted at

困ったこと

RuboCopで既存コードへの指摘を除外することができる --auto-gen-config コマンドにおいて、生成されるrubocop_todo.yml内の Layout/LineLength のMax値はプロジェクト内の最大文字数が指定されてしまうので困った。

プロジェクト内の最大文字数が309文字の行があった場合、以下のようなルールが作られる。

rubocop_todo.yml
Layout/LineLength:
  Max: 309

そうすると、rubocop.ymlでMaxを120などに設定していても実際に適用されるのは309文字の制限となってしまい、将来的にガンガン120文字以上の行が作られてしまう😭😭

解決策

以下のオプションで実行すればいい。

rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 999999

何をやってるの

--auto-gen-only-exclude

このオプションを追加することで他のcopのようにファイルを除外することができる。しかし除外されたファイルの数後述する exclude limit よりも多い場合、デフォルトのようにMaxパラメータを変更してしまう。

--exclude-limit 999999

このオプションを追加することで除外するファイル数を変更することができる。デフォルトは15で、このlimitより除外するファイルが多い場合はcop自体をfalseしてしまう。999999は適当な数字で、プロジェクト内のファイル数より十分に大きい数を指定すればいい。

ドキュメントに全て書かれています。
https://rubocop.readthedocs.io/en/latest/configuration/#automatically-generated-configuration

終わり

これで一行が長いコードが生まれる前に消し去ることができる…!そして平穏が訪れた。

実行環境

ruby: 2.6.1
rails: 6.0.2.1
rubocop: 0.78.0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8