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
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
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