LoginSignup
16
9

More than 3 years have passed since last update.

RuboCopの"The following cops were added to RuboCop, but are not configured."の対処方法

Last updated at Posted at 2020-04-12

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 に以下を追記します。

.rubocop.yml
Lint/RaiseException:
  Enabled: true
Lint/StructNewOverride:
  Enabled: true
Style/HashEachMethods:
  Enabled: true
Style/HashTransformKeys:
  Enabled: true
Style/HashTransformValues:
  Enabled: true

方法2. ルールが追加された時の挙動を設定する

ルールをバージョンアップと同時に有効化してもよい場合、以下のように設定することも可能です。

.rubocop.yml
AllCops:
  NewCops: enable
bash
$ 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で一斉に有効となるようです。
ですので、この記事は今後も有効な内容となると思われます。

16
9
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
  3. You can use dark theme
What you can do with signing up
16
9