RuboCopにRSpecのルールを導入してみた に続き、RuboCop Performance を導入しました。
パフォーマンス的に良い書き方を提案(強制)してくれます。
導入時に何故かRailsのルールが増えてしまったので、対応含めメモしておきます。

RuboCop Performance導入

Gemfile

group :development, :test do
  # Use RuboCop
  gem 'rubocop'
  gem 'rubocop-rails'
  gem 'rubocop-rspec'
+  gem 'rubocop-performance'
% bundle install

.rubocop.yml

+ require:
+  - rubocop-rails
+  - rubocop-rspec
+  - rubocop-performance

- require: rubocop-rspec

Railsのルール対応

rubocop-railsをrequireに追加した事で、ルールが増えてしまったようです。(何故?)
Pendingが有効になっちゃうのもある。(何故?)

理由は解らないけど、有効な方が良いルールもあったので、requireはそのままにして、無効にした方が良いルールを追加して対応しました。

下記ルール追加後、自動+手動修正
「rubocop -a」:動作確認しなくても動く(今まで動かなかったのはなかった)
「rubocop -A」:自動修正できても動くとは限らないので、動作確認が必要

.rubocop.yml

### Rails
# https://docs.rubocop.org/rubocop-rails/cops_rails.html

# C: [Correctable] Rails/ActionOrder: Action xxx should appear before xxx.
Rails/ActionOrder:
  Enabled: false # NOTE: Pendingだけど有効になる為

# C: Rails/BulkChangeTable: You can use change_table :xxx, bulk: true to combine alter queries.
Rails/BulkChangeTable:
  Enabled: false

# C: Rails/LexicallyScopedActionFilter: xxx is not explicitly defined on the class.
Rails/LexicallyScopedActionFilter:
  Enabled: false

# C: [Correctable] Rails/NegateInclude: Use .exclude? and remove the negation part.
Rails/NegateInclude:
  Enabled: false # NOTE: Pendingだけど有効になる為

# C: [Correctable] Rails/Output: Do not write to stdout. Use Rails's logger if you want to log.
Rails/Output:
  Enabled: false

# C: [Correctable] Rails/RedundantActiveRecordAllMethod: Redundant all detected.
Rails/RedundantActiveRecordAllMethod:
  Enabled: false # NOTE: Pendingだけど有効になる為

# C: [Correctable] Rails/RootPathnameMethods: Rails.root is a Pathname, so you can use xxx.
Rails/RootPathnameMethods:
  Enabled: false # NOTE: Pendingだけど有効になる為

# C: Rails/SkipsModelValidations: Avoid using xxx because it skips validations.
Rails/SkipsModelValidations:
  Enabled: false

# C: Rails/ThreeStateBooleanColumn: Boolean columns should always have a default value and a NOT NULL constraint.
Rails/ThreeStateBooleanColumn:
  Enabled: false # NOTE: Pendingだけど有効になる為

今回のコミット内容

origin rubocop-performance導入、自動修正・todo更新、Better Errors導入
origin todo解消: Performance/CollectionLiteralInLoop, StringInclude
origin RuboCop Railsルール追加。DEPRECATION WARNINGをエラーにする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です