+ if not toolcontext.opt_rta.value and not toolcontext.opt_all.value then return
+ var csv = toolcontext.opt_csv.value
+ var out = "{toolcontext.opt_dir.value or else "metrics"}/rta"
+ out.mkdir
+
+ var model = toolcontext.modelbuilder.model
+ var filter = new ModelFilter(min_visibility = protected_visibility)
+
+ print toolcontext.format_h1("\n# RTA metrics")
+
+ print toolcontext.format_h2("\n ## Live instances by mainmodules")
+ var mmetrics = new MetricSet
+ mmetrics.register(new MNLC(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.register(new MNLT(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.register(new MNCT(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.register(new MNLI(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.register(new MNLM(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.register(new MNLMD(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.register(new MNLDD(model, mainmodule, filter, toolcontext.modelbuilder))
+ mmetrics.collect(new HashSet[MModule].from([mainmodule]))
+ mmetrics.to_console(1, not toolcontext.opt_nocolors.value)
+ if csv then mmetrics.to_csv.write_to_file("{out}/{mainmodule}.csv")
+
+ var mtypes = new HashSet[MType]
+ var analysis = new MetricsRapidTypeAnalysis(toolcontext.modelbuilder, mainmodule)
+ analysis.run_analysis
+ mtypes.add_all(analysis.live_types)
+ mtypes.add_all(analysis.live_cast_types)
+
+ print toolcontext.format_h2("\n ## Total live instances by mclasses")
+ var cmetrics = new MetricSet
+ cmetrics.register(analysis.cnli)
+ cmetrics.register(analysis.cnlc)
+ cmetrics.to_console(1, not toolcontext.opt_nocolors.value)
+ if csv then cmetrics.to_csv.write_to_file("{out}/mclasses.csv")
+
+ print toolcontext.format_h2("\n ## Total live instances by mtypes")
+ var tmetrics = new MetricSet
+ tmetrics.register(analysis.tnli)
+ tmetrics.register(analysis.tnlc)
+ tmetrics.to_console(1, not toolcontext.opt_nocolors.value)
+ if csv then tmetrics.to_csv.write_to_file("{out}/mtypes.csv")
+
+ print toolcontext.format_h2("\n ## MType complexity")
+ var gmetrics = new MetricSet
+ gmetrics.register(new TAGS)
+ gmetrics.register(new TDGS)
+ gmetrics.collect(mtypes)
+ gmetrics.to_console(1, not toolcontext.opt_nocolors.value)
+ if csv then gmetrics.to_csv.write_to_file("{out}/complexity.csv")
+
+ callsite_info(analysis)
+
+ # dump type and method infos
+ if csv then
+ analysis.live_types_to_csv.write_to_file("{out}/rta_types.csv")
+ analysis.live_methods_to_tree.write_to_file("{out}/rta_methods.dat")
+ end