X-Git-Url: http://nitlanguage.org diff --git a/src/metrics/metrics_base.nit b/src/metrics/metrics_base.nit index c99ec62..ba4856e 100644 --- a/src/metrics/metrics_base.nit +++ b/src/metrics/metrics_base.nit @@ -197,6 +197,9 @@ interface Metric end end + # The sum of all the values. + fun sum: VAL is abstract + # The values standard derivation fun std_dev: Float is abstract @@ -211,6 +214,11 @@ interface Metric # The set of element above the threshold fun above_threshold: Set[ELM] is abstract + + # Sort the metric keys by values + fun sort: Array[ELM] do + return values.keys_sorted_by_values(default_reverse_comparator) + end end # A Metric that collects integer data @@ -227,7 +235,7 @@ class IntMetric redef fun clear do values_cache.clear - fun sum: Int do return values_cache.sum + redef fun sum do return values_cache.sum redef fun max do assert not values_cache.is_empty @@ -240,9 +248,9 @@ class IntMetric end # Values average - redef fun avg: Float do return values_cache.avg + redef fun avg do return values_cache.avg - redef fun std_dev: Float do return values_cache.std_dev + redef fun std_dev do return values_cache.std_dev redef fun above_threshold do var above = new HashSet[ELM] @@ -276,7 +284,8 @@ class FloatMetric redef fun clear do values_cache.clear - fun sum: Float do + + redef fun sum do var sum = 0.0 for v in values.values do sum += v return sum @@ -313,7 +322,7 @@ class FloatMetric return sum / values.length.to_f end - redef fun std_dev: Float do + redef fun std_dev do var sum = 0.0 for value in values.values do sum += (value - avg).pow(2.to_f) @@ -338,7 +347,6 @@ class FloatMetric print "{"\t" * indent} sum: {sum}" end end - end # A MetricSet is a metric holder @@ -370,6 +378,8 @@ class MetricSet fun to_csv: CsvDocument do var csv = new CsvDocument + csv.format = new CsvFormat('"', ';', "\n") + # set csv headers csv.header.add("entry") for metric in metrics do csv.header.add(metric.name)