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 EnforcedStyle: runtime_error (default)
# bad class C < Exception; end C = Class.new(Exception) # good class C < RuntimeError; end C = Class.new(RuntimeError)
@example EnforcedStyle: standard_error
# bad class C < Exception; end C = Class.new(Exception) # good class C < StandardError; end C = Class.new(StandardError)
Constants
- ILLEGAL_CLASSES
- MSG
- PREFERRED_BASE_CLASS
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 78 def autocorrect(node) lambda do |corrector| corrector.replace(node.loc.expression, preferred_base_class) end end
on_class(node)
click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 64 def on_class(node) return unless node.parent_class && illegal_class_name?(node.parent_class) add_offense(node.parent_class) end
on_send(node)
click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 71 def on_send(node) constant = class_new_call?(node) return unless constant && illegal_class_name?(constant) add_offense(constant) end
Private Instance Methods
illegal_class_name?(class_node)
click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 90 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 86 def message(node) format(MSG, prefer: preferred_base_class, current: node.const_name) end
preferred_base_class()
click to toggle source
# File lib/rubocop/cop/lint/inherit_exception.rb, line 94 def preferred_base_class PREFERRED_BASE_CLASS[style] end