# Metrics on the usage of explicit static types.
module static_types_metrics
-private import metrics_base
-import modelbuilder
-import modelize_class
-import frontend
+import metrics_base
+import modelize
redef class ToolContext
- var static_types_metrics_phase = new StaticTypesMetricsPhase(self, null)
+ var static_types_metrics_phase: Phase = new StaticTypesMetricsPhase(self, null)
end
private class StaticTypesMetricsPhase
var typecount: Counter[MType]
- # Get a new visitor on a classef to add type count in `typecount`.
- init(modelbuilder: ModelBuilder, nclassdef: AClassdef, typecount: Counter[MType])
- do
- self.modelbuilder = modelbuilder
- self.nclassdef = nclassdef
- self.typecount = typecount
- end
-
redef fun visit(n)
do
- if n isa AType then
- var mtype = modelbuilder.resolve_mtype(self.nclassdef, n)
+ if n isa AAnnotation then return
+
+ if n isa AType then do
+ var mclassdef = self.nclassdef.mclassdef
+ if mclassdef == null then break
+ var mtype = modelbuilder.resolve_mtype(mclassdef, n)
if mtype != null then
self.typecount.inc(mtype)
end