Class: ArchSpec::Rules::NoCyclesRule

Inherits:
Object
  • Object
show all
Defined in:
lib/archspec/rules/cycle_rule.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(among: nil) ⇒ NoCyclesRule

Returns a new instance of NoCyclesRule.



8
9
10
# File 'lib/archspec/rules/cycle_rule.rb', line 8

def initialize(among: nil)
  @components = Array(among).compact.map(&:to_sym)
end

Instance Attribute Details

#componentsObject (readonly)

Returns the value of attribute components.



6
7
8
# File 'lib/archspec/rules/cycle_rule.rb', line 6

def components
  @components
end

Instance Method Details

#evaluate(graph) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/archspec/rules/cycle_rule.rb', line 16

def evaluate(graph)
  cycles(graph).map do |cycle|
    location = first_location_for_cycle(graph, cycle) || SourceLocation.new(graph.root, 1, 1)
    Diagnostic.new(
      rule: id,
      message: "component dependency cycle: #{cycle.join(' -> ')}",
      location: location,
      evidence: cycle.join(' -> ')
    )
  end
end

#idObject



12
13
14
# File 'lib/archspec/rules/cycle_rule.rb', line 12

def id
  'dependencies.no_cycles'
end