Class: RuboCop::Cop::Rails::ActiveSupportAliases
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Rails::ActiveSupportAliases
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/rails/active_support_aliases.rb
Overview
Checks that ActiveSupport aliases to core ruby methods are not used.
Constant Summary collapse
- MSG =
'Use `%<prefer>s` instead of `%<current>s`.'
- RESTRICT_ON_SEND =
%i[starts_with? ends_with? append prepend].freeze
- ALIASES =
{ starts_with?: { original: :start_with?, matcher: '(call str :starts_with? _)' }, ends_with?: { original: :end_with?, matcher: '(call str :ends_with? _)' }, append: { original: :<<, matcher: '(call array :append _)' }, prepend: { original: :unshift, matcher: '(call array :prepend _)' } }.freeze
Instance Method Summary collapse
- #on_send(node) ⇒ Object (also: #on_csend)
Instance Method Details
#on_send(node) ⇒ Object Also known as: on_csend
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rubocop/cop/rails/active_support_aliases.rb', line 43 def on_send(node) ALIASES.each_key do |aliased_method| next unless public_send(aliased_method, node) preferred_method = ALIASES[aliased_method][:original] = format(MSG, prefer: preferred_method, current: aliased_method) add_offense(node.loc.selector.join(node.source_range.end), message: ) do |corrector| next if append(node) corrector.replace(node.loc.selector, preferred_method) end end end |