困ったこと
RuboCopで既存コードへの指摘を除外することができる --auto-gen-config
コマンドにおいて、生成されるrubocop_todo.yml内の Layout/LineLength のMax値はプロジェクト内の最大文字数が指定されてしまうので困った。
プロジェクト内の最大文字数が309文字の行があった場合、以下のようなルールが作られる。
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