+# Class Metric: Number of MProperties
+class CNBP
+ super MClassMetric
+ super IntMetric
+ redef fun name do return "cnbp"
+ redef fun desc do return "number of accessible properties (inherited + local)"
+
+ var mainmodule: MModule
+ var min_visibility: MVisibility
+
+ init(mainmodule: MModule, min_visibility: MVisibility) do
+ self.mainmodule = mainmodule
+ self.min_visibility = min_visibility
+ end
+
+ redef fun collect(mclasses) do
+ for mclass in mclasses do
+ values[mclass] = mclass.collect_accessible_mproperties(min_visibility).length
+ end
+ end
+end
+
+# Class Metric: Number of MAttributes
+class CNBA
+ super MClassMetric
+ super IntMetric
+ redef fun name do return "cnba"
+ redef fun desc do return "number of accessible attributes (inherited + local)"
+
+ var mainmodule: MModule
+ var min_visibility: MVisibility
+
+ init(mainmodule: MModule, min_visibility: MVisibility) do
+ self.mainmodule = mainmodule
+ self.min_visibility = min_visibility
+ end
+
+ redef fun collect(mclasses) do
+ for mclass in mclasses do
+ values[mclass] = mclass.collect_accessible_mattributes(min_visibility).length
+ end
+ end
+end
+