Class: RuboCop::Cop::Sidekiq::SilentRescue

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

Overview

Checks for rescue blocks that swallow exceptions in Sidekiq jobs.

Examples:

# bad
def perform
  do_work
rescue => e
  Rails.logger.error(e)
end

# good
def perform
  do_work
rescue => e
  Rails.logger.error(e)
  raise
end

Constant Summary collapse

MSG =
'Do not silently swallow exceptions in Sidekiq jobs. Re-raise or handle explicitly.'
RERAISE_METHODS =
%i[raise fail].freeze

Instance Method Summary collapse

Methods included from Sidekiq::Language

#active_job_class?, #perform_call?, #sidekiq_include?, #sidekiq_options_call?

Instance Method Details

#on_def(node) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rubocop/cop/sidekiq/silent_rescue.rb', line 28

def on_def(node)
  return unless node.method?(:perform)
  return unless in_sidekiq_job?(node)

  node.each_descendant(:resbody) do |resbody|
    next if allowed_exception?(resbody)
    next if re_raises?(resbody)

    add_offense(resbody)
  end
end