var typecount: Counter[MType]
- # Get a new visitor on a classef to add type count in `typecount'.
+ # 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
# Display data
print "--- Metrics of the explitic static types ---"
- print "Total number of explicit static types: {typecount.total}"
- if typecount.total == 0 then return
+ print "Total number of explicit static types: {typecount.sum}"
+ if typecount.sum == 0 then return
- # types sorted by usage
- var types = typecount.sort
-
- # Display most used types (ie the last of `types')
- print "Most used types: "
- var min = 10
- if types.length < min then min = types.length
- for i in [0..min[ do
- var t = types[types.length-i-1]
- print " {t}: {typecount[t]}"
- end
-
- # Compute the distribution of type usage
- print "Distribution of type usage:"
- var count = 0
- var sum = 0
- var limit = 1
- for t in types do
- if typecount[t] > limit then
- print " <={limit}: {count} ({div(count*100,types.length)}% of types; {div(sum*100,typecount.total)}% of usage)"
- count = 0
- sum = 0
- while typecount[t] > limit do limit = limit * 2
- end
- count += 1
- sum += typecount[t]
- end
- print " <={limit}: {count} ({div(count*100,types.length)}% of types; {div(sum*100,typecount.total)}% of usage)"
+ print "Statistics of type usage:"
+ typecount.print_summary
+ typecount.print_elements(10)
end