Module: CppDependencyGraph

Defined in:
lib/cpp_dependency_graph.rb,
lib/cpp_dependency_graph/version.rb

Overview

Generates dependency graphs of a project in various output forms

Constant Summary collapse

VERSION =
'0.1.1'

Instance Method Summary collapse

Instance Method Details

#generate_component_graph(project_dir, component, format, output_file) ⇒ Object



18
19
20
21
22
23
# File 'lib/cpp_dependency_graph.rb', line 18

def generate_component_graph(project_dir, component, format, output_file)
  project = Project.new(project_dir)
  graph = DependencyGraph.new(project)
  deps = graph.component_links(component)
  generate_visualisation(deps, format, output_file)
end

#generate_component_include_graph(project_dir, component_name, format, output_file) ⇒ Object



25
26
27
28
29
30
# File 'lib/cpp_dependency_graph.rb', line 25

def generate_component_include_graph(project_dir, component_name, format, output_file)
  project = Project.new(project_dir)
  graph = IncludeDependencyGraph.new(project)
  deps = graph.include_links(component_name)
  generate_visualisation(deps, format, output_file)
end

#generate_project_graph(project_dir, format, output_file) ⇒ Object



11
12
13
14
15
16
# File 'lib/cpp_dependency_graph.rb', line 11

def generate_project_graph(project_dir, format, output_file)
  project = Project.new(project_dir)
  graph = DependencyGraph.new(project)
  deps = graph.all_component_links
  generate_visualisation(deps, format, output_file)
end

#generate_visualisation(deps, format, file) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/cpp_dependency_graph.rb', line 40

def generate_visualisation(deps, format, file)
  case format
  when 'dot'
    GraphVisualiser.new.generate_dot_file(deps, file)
  when 'html'
    GraphVisualiser.new.generate_html_file(deps, file)
  end
end

#output_cyclic_dependencies(project_dir) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/cpp_dependency_graph.rb', line 32

def output_cyclic_dependencies(project_dir)
  project = Project.new(project_dir)
  graph = DependencyGraph.new(project)
  deps = graph.all_component_links
  cyclic_deps = deps.values.flatten.select { |dep| dep.cyclic? }
  puts JSON.pretty_generate(cyclic_deps)
end