class Depcop::CircularDependency

Public Class Methods

new(nodes, edges) click to toggle source
# File lib/depcop.rb, line 16
def initialize(nodes, edges)
  dependencies = Hash[nodes.map { |n| [n.join("::"), []] }]

  edges.each do |edge|
    node = edge["from"].join("::")
    dependency = edge["to"].join("::")
    dependencies[node] << dependency
  end

  @graph = Graph.new(dependencies)
end

Public Instance Methods

run() click to toggle source
# File lib/depcop.rb, line 28
def run
  circles = @graph.strongly_connected_components.select { |component| component.size > 1 }
  circles.map { |c| "Circular dependency: " + c.join(" --- ") }
end