Class: RuboCop::Cop::Sidekiq::KeywordArguments

Inherits:
Base
  • Object
show all
Includes:
Helpers
Defined in:
lib/rubocop/cop/sidekiq/keyword_arguments.rb

Overview

This cop checks for Sidekiq worker perform methods that use keyword args. Keyword args cannot be properly serialized to Redis and are thus not recommended. Use regular arguments instead.

Examples:

# bad
class MyWorker
  include Sidekiq::Worker

  def perform(id:, keyword_with_default: false, **other_kwargs)
  end
end

# good
class MyWorker
  include Sidekiq::Worker

  def perform(id, arg_with_default = false, *other_args)
  end
end

Constant Summary collapse

MSG =
"Keyword arguments are not allowed in a sidekiq worker's perform method."
KWARG_TYPES =
i[kwarg kwoptarg kwrestarg].freeze

Constants included from Helpers

Helpers::NODE_MATCHERS

Instance Method Summary collapse

Methods included from Helpers

#approve_node, #expand_array_node, #expand_hash_array_node, #expand_hash_node, #expand_node, #expand_nodes, #in_sidekiq_worker?, included, #node_approved?, #sidekiq_arguments, #within?

Instance Method Details

#on_def(node) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/rubocop/cop/sidekiq/keyword_arguments.rb', line 39

def on_def(node)
  return unless perform_with_kwargs?(node)
  return unless in_sidekiq_worker?(node)

  node.arguments.each do |arg|
    next unless KWARG_TYPES.include?(arg.type)

    add_offense(arg)
  end
end