let pp_value_coverage () =
assert (Db.Value.is_computed ());
let semantic = compute_semantic () in
let main = fst (Globals.entry_point ()) in
let syntactic, initializers = compute_syntactic main in
let unseen = Varinfo.Set.diff syntactic semantic in
let unseen_num = Varinfo.Set.cardinal unseen in
let nsyn = Varinfo.Set.cardinal syntactic
and nsem = Varinfo.Set.cardinal semantic in
let percent = (float_of_int nsem) /. (float_of_int nsyn) *. 100.0 in
(fun fmt ->
Format.fprintf fmt "@[<v 0>Value coverage statistics@ -------------------------@ Syntactically reachable functions = %d@ Semantically reached functions = %d@ Coverage estimation = %.1f%% @ "
nsyn nsem percent;
if unseen_num > 0 then
Format.fprintf fmt "@ @[<v 2>Unseen functions (%d) =@ %a@]"
unseen_num pp_fun_set_by_file unseen;
Format.fprintf fmt "@]"
),
(fun fmt ->
pp_unreached_calls fmt ~syntactic ~semantic initializers)