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をエラーにする