Class: RuboCop::Cop::Legion::HelperMigration::DirectTransport

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/legion/helper_migration/direct_transport.rb

Overview

Detects direct calls to ‘Legion::Transport::Connection` methods and suggests using the `transport_*` helpers instead.

Examples:

# bad
Legion::Transport::Connection.session_open?
Legion::Transport::Connection.channel_open?
Legion::Transport::Connection.lite_mode?
Legion::Transport::Connection.channel

# good
transport_session_open?
transport_channel_open?
transport_lite_mode?
transport_channel

Constant Summary collapse

MSG =
'Use `%<helper>s` instead of `%<receiver>s.%<method>s`. ' \
'Include the transport helper mixin.'
RESTRICT_ON_SEND =
%i[session_open? channel_open? lite_mode? channel count].freeze
CONNECTION_MAP =
{
  session_open?: 'transport_session_open?',
  channel_open?: 'transport_channel_open?',
  lite_mode?: 'transport_lite_mode?',
  channel: 'transport_channel'
}.freeze
SPOOL_MAP =
{
  count: 'transport_spool_count'
}.freeze

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/rubocop/cop/legion/helper_migration/direct_transport.rb', line 51

def on_send(node)
  if transport_connection_call?(node)
    register_offense(node, 'Legion::Transport::Connection', CONNECTION_MAP)
  elsif transport_spool_call?(node)
    register_offense(node, 'Legion::Transport::Spool', SPOOL_MAP)
  end
end

#transport_connection_call?(node) ⇒ Object



42
43
44
# File 'lib/rubocop/cop/legion/helper_migration/direct_transport.rb', line 42

def_node_matcher :transport_connection_call?, <<~PATTERN
  (send (const (const (const nil? :Legion) :Transport) :Connection) {:session_open? :channel_open? :lite_mode? :channel} ...)
PATTERN

#transport_spool_call?(node) ⇒ Object



47
48
49
# File 'lib/rubocop/cop/legion/helper_migration/direct_transport.rb', line 47

def_node_matcher :transport_spool_call?, <<~PATTERN
  (send (const (const (const nil? :Legion) :Transport) :Spool) :count ...)
PATTERN