Merge: doc: fixed some typos and other misc. corrections
[nit.git] / src / metrics / mmodules_metrics.nit
index 3f65954..b740912 100644 (file)
@@ -37,21 +37,20 @@ private class MModulesMetricsPhase
                out.mkdir
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.private_view
 
                print toolcontext.format_h1("\n# MModules metrics")
 
                var metrics = new MetricSet
-               metrics.register(new MNOA(mainmodule, model_view))
-               metrics.register(new MNOP(mainmodule, model_view))
-               metrics.register(new MNOC(mainmodule, model_view))
-               metrics.register(new MNOD(mainmodule, model_view))
-               metrics.register(new MDIT(mainmodule, model_view))
-               metrics.register(new MNBI(mainmodule, model_view))
-               metrics.register(new MNBR(mainmodule, model_view))
-               metrics.register(new MNBCC(mainmodule, model_view))
-               metrics.register(new MNBAC(mainmodule, model_view))
-               metrics.register(new MNBIC(mainmodule, model_view))
+               metrics.register(new MNOA(model, mainmodule))
+               metrics.register(new MNOP(model, mainmodule))
+               metrics.register(new MNOC(model, mainmodule))
+               metrics.register(new MNOD(model, mainmodule))
+               metrics.register(new MDIT(model, mainmodule))
+               metrics.register(new MNBI(model, mainmodule))
+               metrics.register(new MNBR(model, mainmodule))
+               metrics.register(new MNBCC(model, mainmodule))
+               metrics.register(new MNBAC(model, mainmodule))
+               metrics.register(new MNBIC(model, mainmodule))
 
                var mmodules = new HashSet[MModule]
                for mpackage in model.mpackages do
@@ -85,11 +84,14 @@ abstract class MModuleMetric
        super Metric
        redef type ELM: MModule
 
-       # Main module used for linearization
+       # Model view used to collect and filter entities
+       var model: Model
+
+       # Mainmodule used for linearization
        var mainmodule: MModule
 
-       # Model view used to collect and filter entities
-       var model_view: ModelView
+       # Filter to apply on model if any
+       var filter: nullable ModelFilter
 end
 
 # Module Metric: Number of Ancestors
@@ -162,6 +164,25 @@ class MDIT
        end
 end
 
+# Module Metric: Number of Accessible Definitions (of all kind)
+#
+# count all mclasses accessible by the module
+class MNBD
+       super MModuleMetric
+       super IntMetric
+       redef fun name do return "mnbd"
+       redef fun desc do return "number of definition accessibles in module"
+
+       redef fun collect(mmodules) do
+               for mmodule in mmodules do
+                       values[mmodule] = 0
+                       for a in mmodule.collect_ancestors(mainmodule, filter) do
+                               values[mmodule] += a.intro_mclasses.length
+                       end
+               end
+       end
+end
+
 # Module Metric: Number of Introduction (of all kind)
 #
 # count all mclasses introduced by the module