class ArchSpec::Rules::NoCyclesRule
Backs ArchSpec::DSL::Context#no_cycles!. Flags dependency cycles between components, reporting each cycle once in a canonical order.
Attributes
Public Class Methods
Source
# File lib/archspec/rules/cycle_rule.rb, line 10 def initialize(among: nil) @components = Array(among).compact.map(&:to_sym) end
Public Instance Methods
Source
# File lib/archspec/rules/cycle_rule.rb, line 18 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