RuboCop 本体から Performance Cops が外される

次の RuboCop バージョンとして予定されている 0.68 から Performance Cops が外されます。今後 Performance Cops を使う場合は Gemify された rubocop-performance gem を使うことになるため、RuboCop 0.67 から警告が出るようにしています。

github.com

これから 0.68 までの間を移行期間としているため RuboCop の Performance Cops を使う場合は、以下のような設定を加えてください。

Gemfile に rubocop-performance gem を追加して bundle install する。

gem 'rubocop-performance'

.rubocop.yml に require: rubocop-performance を追加する。例えば以下のように足すことになります。

 inherit_from: .rubocop_todo.yml
 require:
+  - rubocop-performance
   - rubocop-rspec

 AllCops:
   Exclude:
     - 'vendor/**/*'
     - 'spec/fixtures/**/*'
     - 'tmp/**/*'
   TargetRubyVersion: 2.6

rubocop-performance gem についての詳細は https://github.com/rubocop-hq/rubocop-performance を参照してください。

RuboCop 本体と rubocop-performance gem 両方に実装がある場合、rubocop-performance gem の実装が方が優先される動きになります。

Performance Cops が外されることについての移行スケジュールは以下です。

  • RuboCop 0.67 ... Gemfile (あるいは gemspec) に rubocop-performance への依存がない場合に警告を表示します
  • RuboCop 0.68 ... RuboCop Core から Performance Cops を削除します

RuboCop 本体の開発についても RuboCop Performance に依存する形になるので設定のサンプルとして一例まで。

github.com

Performance Cops を Gemify する意図については、以下スライド 67 ページあたりからまとめていますので興味のある方はどうぞ。