Class: RuboCop::Cop::Operandi::DeprecatedMethods
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Operandi::DeprecatedMethods
- Extended by:
- AutoCorrector
- Defined in:
- lib/operandi/rubocop/cop/operandi/deprecated_methods.rb
Overview
Detects deprecated done! and done? method calls and suggests
using stop! and stopped? instead.
This cop checks calls inside service classes that inherit from Operandi::Base or any configured base service classes.
Constant Summary collapse
- MSG_DONE_BANG =
"Use `stop!` instead of deprecated `done!`."- MSG_DONE_QUERY =
"Use `stopped?` instead of deprecated `done?`."- RESTRICT_ON_SEND =
[:done!, :done?].freeze
- REPLACEMENTS =
{ done!: :stop!, done?: :stopped?, }.freeze
- DEFAULT_BASE_CLASSES =
["ApplicationService"].freeze
Instance Method Summary collapse
Instance Method Details
#after_class(_node) ⇒ Object
60 61 62 |
# File 'lib/operandi/rubocop/cop/operandi/deprecated_methods.rb', line 60 def after_class(_node) @in_service_class = false end |
#on_class(node) ⇒ Object
56 57 58 |
# File 'lib/operandi/rubocop/cop/operandi/deprecated_methods.rb', line 56 def on_class(node) @in_service_class = service_class?(node) end |
#on_send(node) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/operandi/rubocop/cop/operandi/deprecated_methods.rb', line 64 def on_send(node) return unless @in_service_class return unless RESTRICT_ON_SEND.include?(node.method_name) return if node.receiver && !self_receiver?(node) = node.method_name == :done! ? MSG_DONE_BANG : MSG_DONE_QUERY replacement = REPLACEMENTS[node.method_name] add_offense(node, message: ) do |corrector| if node.receiver corrector.replace(node, "self.#{replacement}") else corrector.replace(node, replacement.to_s) end end end |