RuboCop 1.5で導入された`SuggestExtensions`パラメータ

RuboCop 1.5で導入されたSuggestExtensionsパラメータについて記しておきます。

導入されたパッチは以下です。

github.com

たとえば Bundler を使って RSpec を依存指定している一方で、RuboCop RSpec を使っていない場合は、以下のように RSpec に対応した拡張 RuboCop が存在することを rubocop コマンド実行のメッセージでサジェスチョンします。不必要な場合はメッセージ中に含まれている方法でオプトアウトできます。

% bundle exec rubocop --parallel
(snip)

Tip: Based on detected gems, the following RuboCop extension libraries
might be helpful:
  * rubocop-rspec (http://github.com/rubocop-hq/rubocop-rspec)

You can opt out of this message by adding the following to your
config (see
https://docs.rubocop.org/rubocop/extensions.html#extension-suggestions
for more options):
  AllCops:
    SuggestExtensions: false

現在デフォルトでサジェスチョンするのは、RuboCop HQ で管理されている以下の拡張 RuboCop です。

新たに拡張 RuboCop を足すこともなく、こういったサジェスチョンが不要といった場合は、メッセージにあるように SuggestExtensions: false を .rubocop.yml に指定してください。サジェスチョンメッセージが消えます。

AllCops:
  SuggestExtensions: false

また、先ほど RuboCop 1.5.2 がリリースされました。

rubygems.org

RuboCop 1.5.0, 1.5.1 は、依存している regexp_parser について 2.0 以上を要求するようにしていましたが、Capybara などは現状 1 系のサポートのみとなっていたため、RuboCop 1.5 系にアップグレードできないというフィードバックがありました。

そのため、RuboCop 1.5.2 では regexp_parser 1 系と 2 系をサポートするようにしました。

注意点としては、regexp_parser 1 系を使っている場合は knu さんが直してくれたマルチバイト文字の正規表現に関する既知のバグが残っているので、ご注意ください (regexp_parser 2 系に上がると直ります) 。両系をサポートしたパッチはこちら。

github.com

bundle update で RuboCop 1.5 系へのアップグレードを試みた際に、唐突に 1.4.2 から 1.5.2 に上がった場合はこういった事情になります。