X-Git-Url: http://nitlanguage.org diff --git a/src/nitmetrics.nit b/src/nitmetrics.nit index 202d497..032ce7f 100644 --- a/src/nitmetrics.nit +++ b/src/nitmetrics.nit @@ -17,64 +17,28 @@ # A program that collects various metrics on nit programs and libraries module nitmetrics -import modelbuilder -import exprbuilder +import frontend::code_gen 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 +# We need a model to collect stuff var model = new Model -# An a model builder to parse files +# And a model builder to parse files 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 - -# Now, we just have to play with the model! -print "*** STATS ***" - -print "" -compute_statistics(model) - -print "" -visit_self(modelbuilder) - -print "" -visit_nullable_sends(modelbuilder) - -print "" -count_ntypes(modelbuilder) - -generate_module_hierarchy(toolcontext, model) -generate_classdef_hierarchy(toolcontext, model) -generate_class_hierarchy(toolcontext, mainmodule) -generate_model_hyperdoc(toolcontext, model) +var mmodules = modelbuilder.parse_full(arguments) +modelbuilder.run_phases -print "" -compute_tables_metrics(mainmodule) +print "*** METRICS ***" -print "" -compute_rta_stats(modelbuilder, mainmodule) +toolcontext.run_global_phases(mmodules)