class Reek::SmellDetectors::SubclassedFromCoreClass
Subclassing core classes in Ruby can lead to unexpected side effects. Knowing that Ruby has a core library, which is written in C, and a standard library, which is written in Ruby, if you do not know exactly how these core classes operate at the C level, you are gonna have a bad time.
Source: words.steveklabnik.com/beware-subclassing-ruby-core-classes
Constants
- CORE_CLASSES
Public Class Methods
Source
# File lib/reek/smell_detectors/subclassed_from_core_class.rb, line 18 def self.contexts [:class, :casgn] end
Public Instance Methods
Source
# File lib/reek/smell_detectors/subclassed_from_core_class.rb, line 29 def sniff superclass = expression.superclass return [] unless superclass sniff_superclass superclass.name end
Checks ctx
for either expressions:
Foo = Class.new(Bar)
class Foo < Bar; end;
@return [Array<SmellWarning>]
Private Instance Methods
Source
# File lib/reek/smell_detectors/subclassed_from_core_class.rb, line 45 def build_smell_warning(ancestor_name) smell_warning(lines: [source_line], message: "inherits from core class '#{ancestor_name}'", parameters: { ancestor: ancestor_name }) end
Source
# File lib/reek/smell_detectors/subclassed_from_core_class.rb, line 39 def sniff_superclass(superclass_name) return [] unless CORE_CLASSES.include?(superclass_name) [build_smell_warning(superclass_name)] end