nitc :: MetricSet :: defaultinit
# A MetricSet is a metric holder
#
# It purpose is to be extended with a metric collect service
class MetricSet
# Type of element measured by this `MetricSet`.
type ELM: Object
# Metrics to compute
var metrics: Set[Metric] = new HashSet[Metric]
# Add a metric to the set
fun register(metrics: Metric...) do for metric in metrics do self.metrics.add(metric)
# Clear all results for all metrics
fun clear do for metric in metrics do metric.clear
# Collect all metrics for this set of class
fun collect(elements: Set[ELM]) do
for metric in metrics do metric.collect(elements)
end
# Pretty print the resuls in console
fun to_console(indent: Int, colors: Bool) do
for metric in metrics do metric.to_console(indent, colors)
end
# Export the metric set in CSV format
fun to_csv: CsvDocument do
var csv = new CsvDocument
csv.separator = ';'
# set csv headers
csv.header.add("entry")
for metric in metrics do csv.header.add(metric.name)
# collect all entries to merge metric results
var entries = new HashSet[ELM]
for metric in metrics do
for entry in metric.values.keys do entries.add(entry)
end
# collect results
for entry in entries do
var line = [entry.to_s]
for metric in metrics do
if metric.has_element(entry) then
line.add(metric[entry].to_s)
else
line.add("n/a")
end
end
csv.records.add(line)
end
return csv
end
end
src/metrics/metrics_base.nit:371,1--427,3