X-Git-Url: http://nitlanguage.org diff --git a/src/nitmetrics.nit b/src/nitmetrics.nit index dd88504..3925360 100644 --- a/src/nitmetrics.nit +++ b/src/nitmetrics.nit @@ -17,21 +17,18 @@ # A program that collects various metrics on nit programs and libraries module nitmetrics -import modelbuilder -import exprbuilder +import frontend import metrics # Create a tool context to handle options and paths var toolcontext = new ToolContext +toolcontext.tooldescription = "Usage: nitmetrics [OPTION]... ...\nComputes various metrics on Nit programs." + # We do not add other options, so process them now! -toolcontext.process_options +toolcontext.process_options(args) # Get arguments var arguments = toolcontext.option_context.rest -if arguments.is_empty or toolcontext.opt_help.value then - toolcontext.option_context.usage - return -end # We need a model to collect stufs var model = new Model @@ -39,77 +36,9 @@ var model = new Model var modelbuilder = new ModelBuilder(model, toolcontext) # Here we load an process all modules passed on the command line -var mmodules = modelbuilder.parse_and_build(arguments) -modelbuilder.full_propdef_semantic_analysis - -if mmodules.length == 0 then return - -var mainmodule: MModule -if mmodules.length == 1 then - mainmodule = mmodules.first -else - # We need a main module, so we build it by importing all modules - mainmodule = new MModule(model, null, "
", new Location(null, 0, 0, 0, 0)) - mainmodule.set_imported_mmodules(mmodules) -end +var mmodules = modelbuilder.parse_full(arguments) +modelbuilder.run_phases print "*** METRICS ***" -# All metrics computation ? -var all = toolcontext.opt_all.value - -# Inheritance usage metrics -if all or toolcontext.opt_inheritance.value then - print "" - compute_inheritance_metrics(toolcontext, model) -end - -# Genericity usage metrics -if all or toolcontext.opt_genericity.value then - print "" - compute_genericity_metrics(toolcontext, model) -end - -# Refinement usage metrics -if all or toolcontext.opt_refinement.value then - print "" - compute_refinement_metrics(model) -end - -# Self usage metrics -if all or toolcontext.opt_self.value then - print "" - compute_self_metrics(modelbuilder) -end - -# Nullables metrics -if all or toolcontext.opt_nullables.value then - print "" - compute_nullables_metrics(modelbuilder) -end - -# Static types metrics -if all or toolcontext.opt_static_types.value then - print "" - compute_static_types_metrics(modelbuilder) -end - -# Tables metrics -if all or toolcontext.opt_tables.value then - print "" - compute_tables_metrics(mainmodule) -end - -# RTA metrics -if all or toolcontext.opt_rta.value then - print "" - compute_rta_metrics(modelbuilder, mainmodule) -end - -# Generate Hyperdoc -if toolcontext.opt_generate_hyperdoc.value then - generate_module_hierarchy(toolcontext, model) - generate_classdef_hierarchy(toolcontext, model) - generate_class_hierarchy(toolcontext, mainmodule) - generate_model_hyperdoc(toolcontext, model) -end +toolcontext.run_global_phases(mmodules)