From 5ea0160f3bb758c4f61ddb72cba73138ec1be6be Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Tue, 9 Jun 2020 16:37:52 +0200 Subject: [PATCH] Use the new Autocorrection API The autocorrection API was changed in Rubocop v0.87.0 (pull request https://github.com/rubocop-hq/rubocop/pull/7868). Here, I change the superclass of `RuboCop::Cop::RSpec::Cop` from `::RuboCop::Cop::Cop` to `::RuboCop::Cop::Base`. This has a few consequences: - Our `#message` methods get called with a different argument than before. It *can* be customized by defining a `#callback_argument` method, but I think it is clearer to avoid callbacks altogether. - Our `#autocorrect` methods don't get called anymore. Instead, we extend `Autocorrector`, and the `corrector` is being yielded when calling `#add_offense`, so the code is mostly moved in there. For some cases, this means that some code can be removed, which is nice. For some cases, it means that the methods get too long, or the code complexity gets too high, and in those cases I chose to just call out to an `#autocorrect` method anyway, but of course passing the `corrector` and any usable local variables along. This also means we bump the dependency of RuboCop quite a bit, from '>= 0.68.1' to '>= 0.87.0'. --- .rubocop_todo.yml | 2 +- rubocop-rspec_rails.gemspec | 2 +- tasks/cops_documentation.rake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index d6a65b65..3846efa0 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -14,4 +14,4 @@ InternalAffairs/MethodNameEqual: # Offense count: 1 # Configuration parameters: CountComments. Metrics/ClassLength: - Max: 104 + Max: 106 diff --git a/rubocop-rspec_rails.gemspec b/rubocop-rspec_rails.gemspec index 48af29b1..fb0299e7 100644 --- a/rubocop-rspec_rails.gemspec +++ b/rubocop-rspec_rails.gemspec @@ -36,7 +36,7 @@ Gem::Specification.new do |spec| 'documentation_uri' => 'https://rubocop-rspec.readthedocs.io/' } - spec.add_runtime_dependency 'rubocop', '>= 0.68.1' + spec.add_runtime_dependency 'rubocop', '>= 0.87.0' spec.add_development_dependency 'rack' spec.add_development_dependency 'rake' diff --git a/tasks/cops_documentation.rake b/tasks/cops_documentation.rake index 8b06365f..2f0ced81 100644 --- a/tasks/cops_documentation.rake +++ b/tasks/cops_documentation.rake @@ -40,7 +40,7 @@ task generate_cops_documentation: :yard_for_generate_documentation do ] config = config.for_cop(cop) safe_auto_correct = config.fetch('SafeAutoCorrect', true) - autocorrect = if cop.new.support_autocorrect? + autocorrect = if cop.support_autocorrect? "Yes #{'(Unsafe)' unless safe_auto_correct}" else 'No'