X-Git-Url: http://nitlanguage.org diff --git a/src/metrics/mmodules_metrics.nit b/src/metrics/mmodules_metrics.nit index fc3a781..4075280 100644 --- a/src/metrics/mmodules_metrics.nit +++ b/src/metrics/mmodules_metrics.nit @@ -54,12 +54,14 @@ private class MModulesMetricsPhase mmodules.add_all(mgroup.mmodules) metrics.collect(new HashSet[MModule].from(mgroup.mmodules), mainmodule) for name, metric in metrics.metrics do - print toolcontext.format_h4("\t{name}: {metric.desc}") - print toolcontext.format_p("\t avg: {metric.avg}") - var max = metric.max - print toolcontext.format_p("\t max: {max.first} ({max.second})") - var min = metric.min - print toolcontext.format_p("\t min: {min.first} ({min.second})") + if metric isa IntMetric then + print toolcontext.format_h4("\t{name}: {metric.desc}") + print toolcontext.format_p("\t avg: {metric.avg}") + var max = metric.max + print toolcontext.format_p("\t max: {max.first} ({max.second})") + var min = metric.min + print toolcontext.format_p("\t min: {min.first} ({min.second})") + end end end end @@ -69,12 +71,14 @@ private class MModulesMetricsPhase metrics.collect(mmodules, mainmodule) for name, metric in metrics.metrics do - print toolcontext.format_h4( "\t{name}: {metric.desc}") - print toolcontext.format_p("\t avg: {metric.avg}") - var max = metric.max - print toolcontext.format_p("\t max: {max.first} ({max.second})") - var min = metric.min - print toolcontext.format_p("\t min: {min.first} ({min.second})") + if metric isa IntMetric then + print toolcontext.format_h4( "\t{name}: {metric.desc}") + print toolcontext.format_p("\t avg: {metric.avg}") + var max = metric.max + print toolcontext.format_p("\t max: {max.first} ({max.second})") + var min = metric.min + print toolcontext.format_p("\t min: {min.first} ({min.second})") + end end end end @@ -98,7 +102,8 @@ end # An abstract Metric on MModules abstract class MModuleMetric - super IntMetric[MModule] + super Metric + redef type ELM: MModule # Collect the metric on the MModule # # Results are stored in the property `values` @@ -108,6 +113,7 @@ end # Module Metric: Number of Ancestors class MNOA super MModuleMetric + super IntMetric redef fun name do return "mnoa" redef fun desc do return "number of ancestor modules" @@ -119,6 +125,7 @@ end # Module Metric: Number of Parents class MNOP super MModuleMetric + super IntMetric redef fun name do return "mnop" redef fun desc do return "number of parent modules" @@ -130,6 +137,7 @@ end # Module Metric: Number of Children class MNOC super MModuleMetric + super IntMetric redef fun name do return "mnoc" redef fun desc do return "number of child modules" @@ -141,6 +149,7 @@ end # Module Metric: Number of Descendants class MNOD super MModuleMetric + super IntMetric redef fun name do return "mnod" redef fun desc do return "number of descendant modules" @@ -152,6 +161,7 @@ end # Module Metric: Depth in Tree class MDIT super MModuleMetric + super IntMetric redef fun name do return "mdit" redef fun desc do return "depth in module tree" @@ -165,6 +175,7 @@ end # count all mclasses introduced by the module class MNBI super MModuleMetric + super IntMetric redef fun name do return "mnbi" redef fun desc do return "number of introduction in module" @@ -178,70 +189,80 @@ end # count all mclasses refined in the module class MNBR super MModuleMetric + super IntMetric redef fun name do return "mnbr" redef fun desc do return "number of refinement in module" redef fun collect(mmodule, main) do - values[mmodule] = 0 + var value = 0 for mclassdef in mmodule.mclassdefs do - if not mclassdef.is_intro then values.inc(mmodule) + if not mclassdef.is_intro then value += 1 end + values[mmodule] = value end end # Module Metric: Number of Concrete Class in module (intro + redef) class MNBCC super MModuleMetric + super IntMetric redef fun name do return "mnbcc" redef fun desc do return "number of concrete class in module (intro + redef)" redef fun collect(mmodule, main) do - values[mmodule] = 0 + var value = 0 for mclassdef in mmodule.mclassdefs do - if mclassdef.mclass.kind == concrete_kind then values.inc(mmodule) + if mclassdef.mclass.kind == concrete_kind then value += 1 end + values[mmodule] = value end end # Module Metric: Number of Abstract Class in module (intro + redef) class MNBAC super MModuleMetric + super IntMetric redef fun name do return "mnbac" redef fun desc do return "number of abstract class in module (intro + redef)" redef fun collect(mmodule, main) do - values[mmodule] = 0 + var value = 0 for mclassdef in mmodule.mclassdefs do - if mclassdef.mclass.kind == abstract_kind then values.inc(mmodule) + if mclassdef.mclass.kind == abstract_kind then value += 1 end + values[mmodule] = value end end # Module Metric: Number of Interface in module (intro + redef) class MNBIC super MModuleMetric + super IntMetric redef fun name do return "mnbic" redef fun desc do return "number of interface in module (intro + redef)" redef fun collect(mmodule, main) do - values[mmodule] = 0 + var value = 0 for mclassdef in mmodule.mclassdefs do - if mclassdef.mclass.kind == interface_kind then values.inc(mmodule) + if mclassdef.mclass.kind == interface_kind then value += 1 end + values[mmodule] = value end end # Module Metric: Number of Enum in module (intro + redef) class MNBEC super MModuleMetric + super IntMetric redef fun name do return "mnbec" redef fun desc do return "number of enum in module (intro + redef)" redef fun collect(mmodule, main) do - values[mmodule] = 0 + var value = 0 for mclassdef in mmodule.mclassdefs do - if mclassdef.mclass.kind == enum_kind then values.inc(mmodule) + if mclassdef.mclass.kind == enum_kind then value += 1 end + values[mmodule] = value end end