Class: RuboCop::Cop::RubyLsp::UseRegisterWithHandlerMethod
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::RubyLsp::UseRegisterWithHandlerMethod
- Extended by:
- T::Sig
- Defined in:
- lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb
Overview
Avoid using register without handler method, or handler without register.
# Register without handler method.
# bad class MyListener < Listener
def initialize(dispatcher)
super()
dispatcher.register(
self,
:on_string_node_enter,
)
end
end
# good class MyListener < Listener
def initialize(dispatcher)
super()
dispatcher.register(
self,
:on_string_node_enter,
)
end
def on_string_node_enter(node)
end
end
# Handler method without register.
# bad class MyListener < Listener
def initialize(dispatcher)
super()
dispatcher.register(
self,
)
end
def on_string_node_enter(node)
end
end
# good class MyListener < Listener
def initialize(dispatcher)
super()
dispatcher.register(
self,
:on_string_node_enter,
)
end
def on_string_node_enter(node)
end
end
Constant Summary collapse
- MSG_MISSING_HANDLER =
"Registered to `%{listener}` without a handler defined."- MSG_MISSING_LISTENER =
"Created a handler without registering the associated `%{listener}` event."
Instance Method Summary collapse
Instance Method Details
#on_new_investigation ⇒ Object
88 89 90 91 92 93 94 95 96 |
# File 'lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb', line 88 def on_new_investigation return if processed_source.blank? listeners = find_all_listeners(processed_source.ast).flat_map { |listener| listener } handlers = find_all_handlers(processed_source.ast).flat_map { |handler| handler } add_offense_to_listeners_without_handler(listeners, handlers) add_offense_handlers_without_listener(listeners, handlers) end |