Rename REAMDE to README.md
[nit.git] / src / nitmetrics.nit
index a2d20f8..3925360 100644 (file)
 # 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]... <file.nit>...\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,45 +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, "<main>", 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)
-
-print ""
-compute_tables_metrics(mainmodule)
+var mmodules = modelbuilder.parse_full(arguments)
+modelbuilder.run_phases
 
-print ""
-compute_rta_stats(modelbuilder, mainmodule)
+print "*** METRICS ***"
 
-# 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)