From db99b4b5105d79aac5c3b65e865e27fa8e91f981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Wed, 18 Mar 2020 15:27:11 +0100 Subject: [PATCH] [Eva] Exports the list (name and description) of enabled abstract domains. Used by the markdown-report plugin. --- src/plugins/markdown-report/md_gen.ml | 36 +++----------------------- src/plugins/value/Eva.mli | 7 +++-- src/plugins/value/value_parameters.ml | 6 +++++ src/plugins/value/value_parameters.mli | 3 +++ 4 files changed, 18 insertions(+), 34 deletions(-) diff --git a/src/plugins/markdown-report/md_gen.ml b/src/plugins/markdown-report/md_gen.ml index d3b3f7fa068..2c342d7285f 100644 --- a/src/plugins/markdown-report/md_gen.ml +++ b/src/plugins/markdown-report/md_gen.ml @@ -39,27 +39,6 @@ let sanitize_anchor s = else if s.[0] = '_' then "a" ^ s else s -let all_eva_domains = - [ "apron-box", "box domain of the Apron library"; - "apron-oct", "octagon domain of the Apron library"; - "apron-polka-equalities", "linear equalities domain of the Apron library"; - "apron-polka-loose", "loose polyhedra domain of the Apron library"; - "apron-polka-strict", "strict polyhedra domain of the Apron library"; - "bitwise", "domain for bitwise computations"; - "equality", "domain for storing equalities between memory locations"; - "gauges", "gauges domain for relations between memory locations \ - and loop counter"; - "inout", "domain for input and output memory locations"; - "octagon", "domain inferring relations b ≤ ±X ± Y ≤ e between pairs of \ - integer variables X and Y."; - "numerors", "domain computing absolute and relative errors \ - of floating-point computations"; - "sign", "sign domain (useful only for demos)"; - "symbolic-locations", - "domain computing ranges of variation for symbolic locations \ - (e.g. `a[i]` when `i` is not precisely known by `Cvalue`)" - ] - let insert_marks env anchor = Comment "BEGIN_REMARK" :: insert_remark env anchor @@ -71,17 +50,10 @@ let plural l s = | _::_::_ -> s ^ "s" let get_eva_domains () = - let eva_domains = Dynamic.Parameter.String.get "-eva-domains" () in - let domains_list = String.split_on_char ',' eva_domains in - let alternative_domains = List.filter ((<>) "cvalue") domains_list in - let aux domain = - let descr = - try List.assoc domain all_eva_domains - with Not_found -> "" - in - (plain "domain" @ bold domain), plain descr - in - List.map aux alternative_domains + let eva_domains = Eva.Value_parameters.enabled_domains () in + let domains = List.filter (fun (name, _) -> name <> "cvalue") eva_domains in + let aux (name, descr) = (plain "domain" @ bold name), plain descr in + List.map aux domains let section_domains env = let anchor = "domains" in diff --git a/src/plugins/value/Eva.mli b/src/plugins/value/Eva.mli index 14467f726e7..462e5bdab03 100644 --- a/src/plugins/value/Eva.mli +++ b/src/plugins/value/Eva.mli @@ -22,8 +22,6 @@ (** Analysis for values and pointers *) -(** No function is directly exported: they are registered in {!Db.Value}. *) - module Value_results: sig type results @@ -33,3 +31,8 @@ module Value_results: sig val change_callstacks: (Value_types.callstack -> Value_types.callstack) -> results -> results end + +module Value_parameters: sig + (** Returns the list (name, descr) of currently enabled abstract domains. *) + val enabled_domains: unit -> (string * string) list +end diff --git a/src/plugins/value/value_parameters.ml b/src/plugins/value/value_parameters.ml index 3f4f1fa94be..70311f618f1 100644 --- a/src/plugins/value/value_parameters.ml +++ b/src/plugins/value/value_parameters.ml @@ -193,6 +193,12 @@ let register_domain ~name ~descr = Cmdline.replace_option_help Domains.option_name "eva" domains (domains_help ()) +let enabled_domains () = + let domains = Domains.get () in + List.filter + (fun (name, _) -> Datatype.String.Set.mem name domains) + !domains_ref + (* Checks that a domain has been registered. *) let check_domain domain = if domain = "help" || domain = "list" diff --git a/src/plugins/value/value_parameters.mli b/src/plugins/value/value_parameters.mli index bca2258cec9..8c338bbc48c 100644 --- a/src/plugins/value/value_parameters.mli +++ b/src/plugins/value/value_parameters.mli @@ -230,6 +230,9 @@ val dkey_widening : category (** Registers available domain names for the -eva-domains option. *) val register_domain: name:string -> descr:string -> unit +(** Returns the list (name, descr) of currently enabled domains. *) +val enabled_domains: unit -> (string * string) list + (* Local Variables: compile-command: "make -C ../../.." -- GitLab