2020-11-03 更新
RuboCop 1.0がリリースされましたので最新情報を追記しました。
先日RuboCopを最新バージョンにしたところ、これまでと違うメッセージが表示されました。
この記事ではメッセージの意味と対処方法の解説を行います。
$ bundle list | grep rubocop
* rubocop (0.81.0)
$ bundle exec rubocop
The following cops were added to RuboCop, but are not configured. Please set Enabled to either `true` or `false` in your `.rubocop.yml` file:
- Lint/RaiseException (0.81)
- Lint/StructNewOverride (0.81)
- Style/HashEachMethods (0.80)
- Style/HashTransformKeys (0.80)
- Style/HashTransformValues (0.80)
For more information: https://docs.rubocop.org/en/latest/versioning/
メッセージの意訳
これらのルールを追加したが、まだ有効化していない。.rubocop.yml
に有効または無効の設定を書いてほしい。
さらに詳しい情報: https://docs.rubocop.org/en/latest/versioning/
2020-11-03 追記
最近URLが変更となったようです。
https://docs.rubocop.org/rubocop/versioning.html
メッセージの目的
RuboCopに新ルールを追加する時、それをバージョンアップと同時に有効化しない方針にしたようです。
機能自体の追加は0.79 (リリース2020/01/6)、運用開始は0.80 (リリース2020/02/18)からでした。
このメッセージが表示されることによって、利用者は有効化までの期間にプロジェクトの事情に合わせた対処がやりやすくなりました。
対処方法
今後のRuboCopのバージョンアップで新ルールは有効化されるため、このメッセージも自動的に表示されなくなります。
これはエラーや警告のメッセージではないため、無視してもいいのかもしれません。
ただ、やはり表示されないに越したことはないため、メッセージが表示されないようにしておきたいと思います。
方法1. 書かれている通りに各ルールの設定を書く
表示された新ルールの設定を全て書けばメッセージは表示されなくなります。
全てを有効化する場合、 .rubocop.yml
に以下を追記します。
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
Style/HashEachMethods:
Enabled: true
Style/HashTransformKeys:
Enabled: true
Style/HashTransformValues:
Enabled: true
方法2. ルールが追加された時の挙動を設定する
ルールをバージョンアップと同時に有効化してもよい場合、以下のように設定することも可能です。
AllCops:
NewCops: enable
$ bundle exec rubocop --enable-pending-cops
ただし、ドキュメントに記載が既にありますが、この機能は投稿時点の最新0.81で未実装です。
以下のPRが先日マージされましたので、次期0.82で追加される模様です。
https://github.com/rubocop-hq/rubocop/pull/7856
私のプロジェクトの場合、RuboCopのバージョンアップと新ルール対応が同時に可能なので、これが入ってきたら適用したいと考えています。
2020-04-20 追記
2020-04-16に0.82がリリースされ、上記が有効になりました。
新ルールがデフォルトで有効となるタイミング
ドキュメントによると「メジャーバージョンアップによって保留状態のルールが一括で有効化される」とのことなので、RuboCop1.0リリースのタイミングで有効になると思われます。
2020-04-20 追記
先日2020-10-21にRuboCop 1.0がリリースされ、これまでペンディングとなっていたルールが一斉に有効となりました。
RuboCop 1.0 Release
なお、1.1以降に追加されるルールは0.82~0.93と同様にペンディングとして追加され、2.0で一斉に有効となるようです。
ですので、この記事は今後も有効な内容となると思われます。