class RuboCop::Cop::Lint::InheritException

This cop looks for error classes inheriting from `Exception` and its standard library subclasses, excluding subclasses of `StandardError`. It is configurable to suggest using either `RuntimeError` (default) or `StandardError` instead.

@example

# bad

class C < Exception; end

@example

# EnforcedStyle: runtime_error (default)

# good

class C < RuntimeError; end

@example

# EnforcedStyle: standard_error

# good

class C < StandardError; end

Constants

ILLEGAL_CLASSES
MSG
PREFERRED_BASE_CLASS

Public Instance Methods

on_class(node) click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 54
def on_class(node)
  _class, base_class, _body = *node

  return unless base_class && illegal_class_name?(base_class)

  add_offense(base_class)
end

Private Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 68
def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.expression, preferred_base_class)
  end
end
illegal_class_name?(class_node) click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 74
def illegal_class_name?(class_node)
  ILLEGAL_CLASSES.include?(class_node.const_name)
end
message(node) click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 64
def message(node)
  format(MSG, preferred_base_class, node.const_name)
end
preferred_base_class() click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 78
def preferred_base_class
  PREFERRED_BASE_CLASS[style]
end