Class: Hashira::Smells::Foreign

Inherits:
Object
  • Object
show all
Defined in:
lib/hashira/smells/foreign.rb

Constant Summary collapse

TYPE_TESTS =
%i[is_a? kind_of? instance_of?].freeze
KEYED_READS =
%i[[] fetch values_at dig key?].freeze
KEYS =
[Prism::StringNode, Prism::SymbolNode].freeze
LITERALS =
[Prism::HashNode, Prism::KeywordHashNode, Prism::ArrayNode, Prism::StringNode].freeze
STATE =
[
  Prism::InstanceVariableReadNode, Prism::InstanceVariableWriteNode,
  Prism::InstanceVariableOrWriteNode, Prism::InstanceVariableAndWriteNode,
  Prism::InstanceVariableOperatorWriteNode, Prism::InstanceVariableTargetNode
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(subject, ownership) ⇒ Foreign

Returns a new instance of Foreign.



20
21
22
23
# File 'lib/hashira/smells/foreign.rb', line 20

def initialize(subject, ownership)
  @subject = subject
  @ownership = ownership
end

Instance Method Details

#dismiss?(name) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
28
# File 'lib/hashira/smells/foreign.rb', line 25

def dismiss?(name)
  convert? || fenced?(name) || wire?(name) || built?(name) ||
    derived?(name) || rescued?(name)
end

#reachesObject



30
31
32
# File 'lib/hashira/smells/foreign.rb', line 30

def reaches
  tests { true }.reject { @ownership.owned?(it) }.map(&:first).uniq
end