class RubbyCop::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/rubbycop/cop/lint/inherit_exception.rb, line 54
def on_class(node)
  _class, base_class, _body = *node

  return if base_class.nil?

  check(base_class)
end

Private Instance Methods

autocorrect(node) click to toggle source
# File lib/rubbycop/cop/lint/inherit_exception.rb, line 71
def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.expression, preferred_base_class)
  end
end
check(node) click to toggle source
# File lib/rubbycop/cop/lint/inherit_exception.rb, line 64
def check(node)
  return unless ILLEGAL_CLASSES.include?(node.const_name)

  msg = format(MSG, preferred_base_class, node.const_name)
  add_offense(node, :expression, msg)
end
preferred_base_class() click to toggle source
# File lib/rubbycop/cop/lint/inherit_exception.rb, line 77
def preferred_base_class
  PREFERRED_BASE_CLASS[style]
end