From a59bfd0d7dbf3b05ba867f238bbbb0ab2f3b55e9 Mon Sep 17 00:00:00 2001
From: Valentin Perrelle <valentin.perrelle@cea.fr>
Date: Thu, 5 Jan 2023 18:19:17 +0100
Subject: [PATCH] [Eva] Add an option to dump statistics into a CSV file

---
 src/plugins/eva/parameters.ml       | 12 ++++++++++++
 src/plugins/eva/parameters.mli      |  1 +
 src/plugins/eva/utils/statistics.ml |  4 ++--
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/plugins/eva/parameters.ml b/src/plugins/eva/parameters.ml
index a8a1b273ecc..dca2f98df57 100644
--- a/src/plugins/eva/parameters.ml
+++ b/src/plugins/eva/parameters.ml
@@ -1091,6 +1091,18 @@ module NumerorsLogFile =
                   function in the given file"
     end)
 
+let () = Parameter_customize.set_group messages
+module StatisticsFile =
+  Filepath
+    (struct
+      let option_name = "-eva-statistics-file"
+      let arg_name = "file.csv"
+      let file_kind = "CSV"
+      let existence = Fc_Filepath.Indifferent
+      let help = "Dump some internal statistics about the analysis"
+    end)
+
+
 (* ------------------------------------------------------------------------- *)
 (* --- Interpreter mode                                                  --- *)
 (* ------------------------------------------------------------------------- *)
diff --git a/src/plugins/eva/parameters.mli b/src/plugins/eva/parameters.mli
index 4d8288faaa6..61daa886425 100644
--- a/src/plugins/eva/parameters.mli
+++ b/src/plugins/eva/parameters.mli
@@ -125,6 +125,7 @@ module ShowSlevel: Parameter_sig.Int
 module PrintCallstacks: Parameter_sig.Bool
 module ReportRedStatuses: Parameter_sig.Filepath
 module NumerorsLogFile: Parameter_sig.Filepath
+module StatisticsFile: Parameter_sig.Filepath
 
 module MemExecAll: Parameter_sig.Bool
 
diff --git a/src/plugins/eva/utils/statistics.ml b/src/plugins/eva/utils/statistics.ml
index 2e50689661f..139a18bf194 100644
--- a/src/plugins/eva/utils/statistics.ml
+++ b/src/plugins/eva/utils/statistics.ml
@@ -179,7 +179,7 @@ let export_as_csv_to_channel out_channel =
   List.iter (pp_stat fmt) l
 
 let export_as_csv ?filename () =
-  let filename = (filename : Filepath.Normalized.t option :> string option) in
-  let filename = Option.value ~default:"stats.json" filename in
+  let default = Parameters.StatisticsFile.get () in
+  let filename = Option.value ~default filename in
   let out_channel = open_out (filename :> string) in
   export_as_csv_to_channel out_channel
-- 
GitLab