diff --git a/src/plugins/markdown-report/Makefile b/src/plugins/markdown-report/Makefile index abecbdebfb5f4594fe78ce39d83230835db8bd34..cd82c36f341e5c168982b0204beefc0256469358 100644 --- a/src/plugins/markdown-report/Makefile +++ b/src/plugins/markdown-report/Makefile @@ -3,7 +3,8 @@ ifndef FRAMAC_SHARE endif PLUGIN_NAME:=Report_markdown -PLUGIN_CMO:=markdown sarif mdr_params parse_remarks eva_coverage md_gen +PLUGIN_CMO:=\ + markdown sarif mdr_params parse_remarks eva_coverage sarif_gen md_gen PLUGIN_NO_TEST:=true PLUGIN_REQUIRES:=ppx_deriving ppx_deriving_yojson yojson PLUGIN_DISTRIB_EXTERNAL:=share/acsl.xml diff --git a/src/plugins/markdown-report/Report_markdown.mli b/src/plugins/markdown-report/Report_markdown.mli index 24a5713e2e21afb9eec8c138155fa2277ab5abda..f76e4200aa34102efb9a561f8a183ca253cddf23 100644 --- a/src/plugins/markdown-report/Report_markdown.mli +++ b/src/plugins/markdown-report/Report_markdown.mli @@ -5,10 +5,7 @@ include Plugin.S module Output: Parameter_sig.String (** Value of [-mdr-gen]. *) -module Generate: Parameter_sig.Bool - -(** Value of [-mdr-gen-draft]. *) -module Gen_draft: Parameter_sig.Bool +module Generate: Parameter_sig.String (** Value of [-mdr-remarks]. *) module Remarks: Parameter_sig.String diff --git a/src/plugins/markdown-report/md_gen.ml b/src/plugins/markdown-report/md_gen.ml index 3fe132bcf7d95020df0ec8699eabb32622e03d5a..c2c784b2b04b196056489d6fcfc987b96fbe489c 100644 --- a/src/plugins/markdown-report/md_gen.ml +++ b/src/plugins/markdown-report/md_gen.ml @@ -582,10 +582,10 @@ let mk_date () = (Printf.sprintf "%d-%02d-%02d" (1900 + tm.Unix.tm_year) (1 + tm.Unix.tm_mon) tm.Unix.tm_mday) -let mk_remarks () = +let mk_remarks is_draft = let f = Mdr_params.Remarks.get () in if f <> "" then Parse_remarks.get_remarks f - else if Mdr_params.Gen_draft.get () then begin + else if is_draft then begin let f = Mdr_params.Output.get() in if Sys.file_exists f then begin Mdr_params.feedback @@ -595,7 +595,7 @@ let mk_remarks () = end else Datatype.String.Map.empty let gen_report is_draft = - let remarks = mk_remarks () in + let remarks = mk_remarks is_draft in let env = { remarks; is_draft } in let context = gen_context env in let coverage = gen_coverage env in @@ -645,13 +645,13 @@ let gen_report is_draft = (Mdr_params.Output.get()) s let main () = - if Mdr_params.Gen_draft.get () then begin - if Mdr_params.Generate.get () then - Mdr_params.warning - "-mdr-gen and -mdr-gen-draft cannot be activated at the \ - same time. Only draft will be generated"; - gen_report true - end - else if Mdr_params.Generate.get () then gen_report false + match Mdr_params.Generate.get () with + | "none" -> () + | "md" -> gen_report false + | "draft" -> gen_report true + | "sarif" -> Sarif_gen.generate () + | s -> + Mdr_params.fatal "Unexpected value for option %s: %s" + Mdr_params.Generate.option_name s let () = Db.Main.extend main diff --git a/src/plugins/markdown-report/mdr_params.ml b/src/plugins/markdown-report/mdr_params.ml index 188830f2ac969958ec35ac77fef56d55bc31854c..be8ef4d1c14c119e9de9be2612e0a9140571c96c 100644 --- a/src/plugins/markdown-report/mdr_params.ml +++ b/src/plugins/markdown-report/mdr_params.ml @@ -13,19 +13,18 @@ struct let help = "sets the name of the output file to <f>" end) -module Generate = False( +module Generate = String( struct let option_name = "-mdr-gen" - let help = "generates an analysis report on the current project" + let arg_name = "kind" + let default = "none" + let help = + "select the <kind> of report to generate among: \ + none (default), md, draft and sarif" end) -module Gen_draft = False( - struct - let option_name = "-mdr-gen-draft" - let help = - "instead of a full report, generates an empty draft \ - in a format suitable for -mdr-remarks" - end) +let () = + Generate.set_possible_values [ "none"; "md"; "draft"; "sarif" ] module Remarks = Empty_string( struct diff --git a/src/plugins/markdown-report/mdr_params.mli b/src/plugins/markdown-report/mdr_params.mli index 993fcafd394dfe9be25543aadff7638e28e18045..4affc377045b0b095f3c67beb02ebbe1601f698c 100644 --- a/src/plugins/markdown-report/mdr_params.mli +++ b/src/plugins/markdown-report/mdr_params.mli @@ -4,10 +4,7 @@ include Plugin.S module Output: Parameter_sig.String (** Value of [-mdr-gen]. *) -module Generate: Parameter_sig.Bool - -(** Value of [-mdr-gen-draft]. *) -module Gen_draft: Parameter_sig.Bool +module Generate: Parameter_sig.String (** Value of [-mdr-remarks]. *) module Remarks: Parameter_sig.String diff --git a/src/plugins/markdown-report/sarif_gen.ml b/src/plugins/markdown-report/sarif_gen.ml new file mode 100644 index 0000000000000000000000000000000000000000..d68842c4d7587ab8e49202675debf25244dfe0d7 --- /dev/null +++ b/src/plugins/markdown-report/sarif_gen.ml @@ -0,0 +1 @@ +let generate () = Mdr_params.not_yet_implemented "Sarif_gen.generate" diff --git a/src/plugins/markdown-report/sarif_gen.mli b/src/plugins/markdown-report/sarif_gen.mli new file mode 100644 index 0000000000000000000000000000000000000000..a3bd7165f7d19c68ea1c494b5e7a7c593ff000fe --- /dev/null +++ b/src/plugins/markdown-report/sarif_gen.mli @@ -0,0 +1,2 @@ +(** generate a sarif json object. *) +val generate: unit -> unit