X-Git-Url: http://nitlanguage.org diff --git a/src/metrics/generate_hierarchies.nit b/src/metrics/generate_hierarchies.nit index 182856b..ecbba30 100644 --- a/src/metrics/generate_hierarchies.nit +++ b/src/metrics/generate_hierarchies.nit @@ -18,10 +18,8 @@ # See graphviz http://www.graphviz.org/ module generate_hierarchies -import model -private import metrics_base -import frontend -import model_viz +import metrics_base +import model::model_viz redef class ToolContext var generate_hierarchies_phase: Phase = new GenerateHierarchyPhase(self, null) @@ -30,11 +28,11 @@ end private class GenerateHierarchyPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return var model = toolcontext.modelbuilder.model - generate_module_hierarchy(toolcontext, model) + generate_module_hierarchy(toolcontext, given_mmodules) generate_classdef_hierarchy(toolcontext, model) generate_class_hierarchy(toolcontext, mainmodule) end @@ -43,17 +41,25 @@ end # Create a dot file representing the module hierarchy of a model. # Importation relation is represented with arrow # Nesting relation is represented with nested boxes -fun generate_module_hierarchy(toolcontext: ToolContext, model: Model) +fun generate_module_hierarchy(toolcontext: ToolContext, given_mmodules: Collection[MModule]) do - var dot = new MProjectDot(model) + var model = given_mmodules.first.model + var dot = new MPackageDot(model) - var projectpath = toolcontext.output_dir.join_path("project_hierarchy.dot") - dot.mprojects.add(model.mprojects.first) - dot.render(projectpath) + # Collect requested packages + for m in given_mmodules do + var g = m.mgroup + if g == null then continue + dot.mpackages.add(g.mpackage) + end + var packagepath = toolcontext.output_dir.join_path("package_hierarchy.dot") + print "generating package_hierarchy.dot" + dot.write_to_file(packagepath) var modulepath = toolcontext.output_dir.join_path("module_hierarchy.dot") - dot.mprojects.add_all(model.mprojects) - dot.render(modulepath) + dot.mpackages.add_all(model.mpackages) + print "generating module_hierarchy.dot" + dot.write_to_file(modulepath) end # Create a dot file representing the class hierarchy of a model. @@ -71,7 +77,7 @@ do end end buf.append("\}\n") - var f = new OFStream.open(toolcontext.output_dir.join_path("class_hierarchy.dot")) + var f = new FileWriter.open(toolcontext.output_dir.join_path("class_hierarchy.dot")) f.write(buf.to_s) f.close end @@ -93,7 +99,7 @@ do end end buf.append("\}\n") - var f = new OFStream.open(toolcontext.output_dir.join_path("classdef_hierarchy.dot")) + var f = new FileWriter.open(toolcontext.output_dir.join_path("classdef_hierarchy.dot")) f.write(buf.to_s) f.close end