From 68370cc7afb252fdb390e2ac0131f34afcfd001d Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Wed, 7 Aug 2019 17:13:23 +0200
Subject: [PATCH] [sarif] Use status of alarm instead of always treating them
 as warning

---
 src/plugins/markdown-report/sarif_gen.ml | 25 ++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/plugins/markdown-report/sarif_gen.ml b/src/plugins/markdown-report/sarif_gen.ml
index 217bbef068a..84abed24032 100644
--- a/src/plugins/markdown-report/sarif_gen.ml
+++ b/src/plugins/markdown-report/sarif_gen.ml
@@ -39,6 +39,16 @@ let gen_remark alarm =
       ]
   ]
 
+let level_of_status =
+  let open Property_status.Feedback in
+  let open Sarif.Result_level in
+  function
+  | Never_tried -> notApplicable
+  | Considered_valid | Valid | Valid_under_hyp | Valid_but_dead -> pass
+  | Unknown | Unknown_but_dead -> warning
+  | Invalid | Invalid_under_hyp | Invalid_but_dead -> error
+  | Inconsistent -> note
+
 let make_message alarm annot remark =
   let open Markdown in
   let name = Alarms.get_name alarm in
@@ -57,9 +67,10 @@ let make_message alarm annot remark =
   Message.create ~text ~richText ()
 
 let gen_results remarks =
-  let treat_alarm _e _kf s ~rank:_ alarm annot (i, content) =
+  let treat_alarm _e kf s ~rank:_ alarm annot (i, content) =
+    let prop = Property.ip_of_code_annot_single kf s annot in
     let label = "Alarm-" ^ string_of_int i in
-    let level = Result_level.warning in
+    let level = level_of_status (Property_status.Feedback.get prop) in
     let remark = get_remark remarks label in
     let message = make_message alarm annot remark in
     let locations = [ Location.of_loc (Cil_datatype.Stmt.loc s) ] in
@@ -75,16 +86,6 @@ let is_alarm = function
   | Property.IPCodeAnnot (_,_,ca) -> Extlib.has_some (Alarms.find ca)
   | _ -> false
 
-let level_of_status =
-  let open Property_status.Feedback in
-  let open Sarif.Result_level in
-  function
-  | Never_tried -> notApplicable
-  | Considered_valid | Valid | Valid_under_hyp | Valid_but_dead -> pass
-  | Unknown | Unknown_but_dead -> warning
-  | Invalid | Invalid_under_hyp | Invalid_but_dead -> error
-  | Inconsistent -> note
-
 let make_ip_message ip =
   let text = Format.asprintf "@[%a.@]" Property.short_pretty ip in
   Message.plain_text ~text ()
-- 
GitLab