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.2'

Instance Method Summary collapse

Instance Method Details

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



21
22
23
24
25
26
# File 'lib/cpp_dependency_graph.rb', line 21

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

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



28
29
30
31
32
33
# File 'lib/cpp_dependency_graph.rb', line 28

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

#generate_cyclic_dependencies(project_dir, format, file) ⇒ Object



49
50
51
52
53
54
# File 'lib/cpp_dependency_graph.rb', line 49

def generate_cyclic_dependencies(project_dir, format, file)
  project = Project.new(project_dir)
  graph = ComponentDependencyGraph.new(project)
  deps = graph.all_cyclic_links
  generate_visualisation(deps, format, file)
end

#generate_enclosure_diagram(project_dir, output_file) ⇒ Object



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

def generate_enclosure_diagram(project_dir, output_file)
  dir_tree = DirTree.new(project_dir)
  tree = dir_tree.tree
  puts tree
  CirclePackingVisualiser.new.generate(tree, output_file)
end

#generate_project_graph(project_dir, format, output_file) ⇒ Object



14
15
16
17
18
19
# File 'lib/cpp_dependency_graph.rb', line 14

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

#generate_project_include_graph(project_dir, format, output_file) ⇒ Object



35
36
37
38
39
40
# File 'lib/cpp_dependency_graph.rb', line 35

def generate_project_include_graph(project_dir, format, output_file)
  project = Project.new(project_dir)
  graph = IncludeDependencyGraph.new(project)
  deps = graph.all_links
  generate_visualisation(deps, format, output_file)
end

#generate_visualisation(deps, format, file) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/cpp_dependency_graph.rb', line 56

def generate_visualisation(deps, format, file)
  case format
  when 'dot'
    GraphToDotVisualiser.new.generate(deps, file)
  when 'html'
    GraphToHtmlVisualiser.new.generate(deps, file)
  when 'json'
    File.write(file, JSON.pretty_generate(deps))
  end
end