Class: RuboCop::Cop::StatsD::MetaprogrammingPositionalArguments

Inherits:
RuboCop::Cop
  • Object
show all
Defined in:
lib/statsd/instrument/rubocop/metaprogramming_positional_arguments.rb

Overview

This Rubocop will check for using the metaprogramming macros for positional argument usage, which is deprecated. These macros include ‘statd_count_if`, `statsd_measure`, etc.

Use the following Rubocop invocation to check your project’s codebase:

rubocop --only StatsD/MetaprogrammingPositionalArguments
  -r `bundle show statsd-instrument`/lib/statsd/instrument/rubocop/metaprogramming_positional_arguments.rb

This cop will not autocorrect the offenses it finds, but generally the fixes are easy to fix

Constant Summary collapse

MSG =
'Use keyword arguments for StatsD metaprogramming macros'
METAPROGRAMMING_METHODS =
%i{
  statsd_measure
  statsd_distribution
  statsd_count_success
  statsd_count_if
  statsd_count
}

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/statsd/instrument/rubocop/metaprogramming_positional_arguments.rb', line 28

def on_send(node)
  if METAPROGRAMMING_METHODS.include?(node.method_name)
    arguments = node.arguments.dup
    arguments.shift # method
    arguments.shift # metric
    arguments.pop if arguments.last&.type == :block_pass
    case arguments.length
    when 0
    when 1
      add_offense(node) if arguments.first.type != :hash
    else
      add_offense(node)
    end
  end
end