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

Instance Method Summary collapse

Instance Method Details

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



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

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



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

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

#generate_cyclic_dependencies(project_dir, format, file) ⇒ Object



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

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



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

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_file_include_graph(project_dir, file_name, format, output_file) ⇒ Object



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

def generate_file_include_graph(project_dir, file_name, format, output_file)
  project = Project.new(project_dir)
  graph = IncludeFileDependencyGraph.new(project)
  deps = graph.links(file_name)
  generate_visualisation(deps, format, output_file)
end

#generate_project_graph(project_dir, format, output_file) ⇒ Object



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

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



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

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

#generate_visualisation(deps, format, file) ⇒ Object



64
65
66
67
68
69
70
71
72
73
# File 'lib/cpp_dependency_graph.rb', line 64

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