Merge: src/model/model_index: model index uses BKTree
[nit.git] / src / metrics / rta_metrics.nit
index ef11924..dc3077e 100644 (file)
@@ -38,26 +38,25 @@ private class RTAMetricsPhase
                out.mkdir
 
                var model = toolcontext.modelbuilder.model
-               var model_view = new ModelView(model, mainmodule)
-               model_view.min_visibility = protected_visibility
+               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_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLT(model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNCT(model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLI(model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLM(model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLMD(model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLDD(model_view, toolcontext.modelbuilder))
+               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, model_view)
+               var analysis = new MetricsRapidTypeAnalysis(toolcontext.modelbuilder, mainmodule)
                analysis.run_analysis
                mtypes.add_all(analysis.live_types)
                mtypes.add_all(analysis.live_cast_types)
@@ -140,7 +139,7 @@ class MNLI
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        values[mainmodule] = analysis.tnli.sum
                end
@@ -156,7 +155,7 @@ class MNLT
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_types.length
                end
@@ -172,7 +171,7 @@ class MNCT
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_cast_types.length
                end
@@ -189,7 +188,7 @@ class MNLC
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
                        var live = new HashSet[MClass]
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        for mtype in analysis.live_types do
                                live.add(mtype.mclass)
@@ -208,7 +207,7 @@ class MNLM
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_methods.length
                end
@@ -224,7 +223,7 @@ class MNLMD
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_methoddefs.length
                end
@@ -241,7 +240,7 @@ class MNLDD
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
                        var dead = 0
-                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
                        analysis.run_analysis
                        for mmethod in analysis.live_methods do
                                for mdef in mmethod.mpropdefs do
@@ -356,14 +355,11 @@ end
 class MetricsRapidTypeAnalysis
        super RapidTypeAnalysis
 
-       # Model view used to linearize classes
-       var view: ModelView
-
        # Class Live Instances
-       var cnli: CNLI is lazy do return new CNLI(view)
+       var cnli: CNLI is lazy do return new CNLI(modelbuilder.model, mainmodule)
 
        # Class Live Casts
-       var cnlc: CNLC is lazy do return new CNLC(view)
+       var cnlc: CNLC is lazy do return new CNLC(modelbuilder.model, mainmodule)
 
        # Type Live Instances
        var tnli = new TNLI