[Inferbo] Do not use deprecated API to log issues

Reviewed By: jvillard

Differential Revision: D6845129

fbshipit-source-id: 0344ad1
master
Mehdi Bouaziz 7 years ago committed by Facebook Github Bot
parent 586582c311
commit dbaf9e459d

@ -381,9 +381,9 @@ module Report = struct
end end
let rec collect_instrs let rec collect_instrs
: extras ProcData.t -> CFG.node -> Sil.instr list -> Dom.Mem.astate -> PO.ConditionSet.t : Specs.summary -> extras ProcData.t -> CFG.node -> Sil.instr list -> Dom.Mem.astate
-> PO.ConditionSet.t = -> PO.ConditionSet.t -> PO.ConditionSet.t =
fun ({pdesc; tenv; extras} as pdata) node instrs mem cond_set -> fun summary ({pdesc; tenv; extras} as pdata) node instrs mem cond_set ->
match instrs with match instrs with
| [] -> | [] ->
cond_set cond_set
@ -399,9 +399,9 @@ module Report = struct
check pname node location mem cond_set check pname node location mem cond_set
| None -> | None ->
match Summary.read_summary pdesc callee_pname with match Summary.read_summary pdesc callee_pname with
| Some summary -> | Some callee_summary ->
let callee = extras callee_pname in let callee = extras callee_pname in
instantiate_cond tenv pname callee params mem summary location instantiate_cond tenv pname callee params mem callee_summary location
|> PO.ConditionSet.join cond_set |> PO.ConditionSet.join cond_set
| _ -> | _ ->
cond_set ) cond_set )
@ -423,7 +423,7 @@ module Report = struct
let exn = let exn =
Exceptions.Condition_always_true_false (desc, not true_branch, __POS__) Exceptions.Condition_always_true_false (desc, not true_branch, __POS__)
in in
Reporting.log_warning_deprecated pname ~loc:location exn Reporting.log_warning summary ~loc:location exn
(* special case for when we're at the end of a procedure *) (* special case for when we're at the end of a procedure *)
| Sil.Call (_, Const Cfun pname, _, _, _) | Sil.Call (_, Const Cfun pname, _, _, _)
when String.equal (Typ.Procname.get_method pname) "exit" when String.equal (Typ.Procname.get_method pname) "exit"
@ -438,29 +438,29 @@ module Report = struct
let location = Sil.instr_get_loc instr in let location = Sil.instr_get_loc instr in
let desc = Errdesc.explain_unreachable_code_after location in let desc = Errdesc.explain_unreachable_code_after location in
let exn = Exceptions.Unreachable_code_after (desc, __POS__) in let exn = Exceptions.Unreachable_code_after (desc, __POS__) in
Reporting.log_error_deprecated pname ~loc:location exn ) Reporting.log_error summary ~loc:location exn )
| _ -> | _ ->
() ()
in in
print_debug_info instr mem' cond_set ; print_debug_info instr mem' cond_set ;
collect_instrs pdata node rem_instrs mem' cond_set collect_instrs summary pdata node rem_instrs mem' cond_set
let collect_node let collect_node
: extras ProcData.t -> Analyzer.invariant_map -> PO.ConditionSet.t -> CFG.node : Specs.summary -> extras ProcData.t -> Analyzer.invariant_map -> PO.ConditionSet.t
-> PO.ConditionSet.t = -> CFG.node -> PO.ConditionSet.t =
fun pdata inv_map cond_set node -> fun summary pdata inv_map cond_set node ->
match Analyzer.extract_pre (CFG.id node) inv_map with match Analyzer.extract_pre (CFG.id node) inv_map with
| Some mem -> | Some mem ->
let instrs = CFG.instrs node in let instrs = CFG.instrs node in
collect_instrs pdata node instrs mem cond_set collect_instrs summary pdata node instrs mem cond_set
| _ -> | _ ->
cond_set cond_set
let collect : extras ProcData.t -> Analyzer.invariant_map -> PO.ConditionSet.t = let collect : Specs.summary -> extras ProcData.t -> Analyzer.invariant_map -> PO.ConditionSet.t =
fun ({pdesc} as pdata) inv_map -> fun summary ({pdesc} as pdata) inv_map ->
let add_node1 acc node = collect_node pdata inv_map acc node in let add_node1 acc node = collect_node summary pdata inv_map acc node in
Procdesc.fold_nodes add_node1 PO.ConditionSet.empty pdesc Procdesc.fold_nodes add_node1 PO.ConditionSet.empty pdesc
@ -484,8 +484,8 @@ module Report = struct
List.fold_right ~f ~init:([], 0) trace.trace |> fst |> List.rev List.fold_right ~f ~init:([], 0) trace.trace |> fst |> List.rev
let report_error : Procdesc.t -> PO.ConditionSet.t -> unit = let report_errors : Specs.summary -> Procdesc.t -> PO.ConditionSet.t -> unit =
fun pdesc cond_set -> fun summary pdesc cond_set ->
let pname = Procdesc.get_proc_name pdesc in let pname = Procdesc.get_proc_name pdesc in
let report cond trace issue_type = let report cond trace issue_type =
let caller_pname, location = let caller_pname, location =
@ -506,13 +506,14 @@ module Report = struct
| exception _ -> | exception _ ->
[Errlog.make_trace_element 0 location description []] [Errlog.make_trace_element 0 location description []]
in in
Reporting.log_error_deprecated pname ~loc:location ~ltr:trace exn Reporting.log_error summary ~loc:location ~ltr:trace exn
in in
PO.ConditionSet.check_all ~report cond_set PO.ConditionSet.check_all ~report cond_set
end end
let compute_post : Analyzer.TransferFunctions.extras ProcData.t -> Summary.payload option = let compute_post
fun {pdesc; tenv; extras= get_pdesc} -> : Specs.summary -> Analyzer.TransferFunctions.extras ProcData.t -> Summary.payload option =
fun summary {pdesc; tenv; extras= get_pdesc} ->
let cfg = CFG.from_pdesc pdesc in let cfg = CFG.from_pdesc pdesc in
let pdata = ProcData.make pdesc tenv get_pdesc in let pdata = ProcData.make pdesc tenv get_pdesc in
let inv_map = Analyzer.exec_pdesc ~initial:Dom.Mem.init pdata in let inv_map = Analyzer.exec_pdesc ~initial:Dom.Mem.init pdata in
@ -524,8 +525,8 @@ let compute_post : Analyzer.TransferFunctions.extras ProcData.t -> Summary.paylo
let exit_id = CFG.id (CFG.exit_node cfg) in let exit_id = CFG.id (CFG.exit_node cfg) in
Analyzer.extract_post exit_id inv_map Analyzer.extract_post exit_id inv_map
in in
let cond_set = Report.collect pdata inv_map in let cond_set = Report.collect summary pdata inv_map in
Report.report_error pdesc cond_set ; Report.report_errors summary pdesc cond_set ;
match (entry_mem, exit_mem) with match (entry_mem, exit_mem) with
| Some entry_mem, Some exit_mem -> | Some entry_mem, Some exit_mem ->
Some (entry_mem, exit_mem, cond_set) Some (entry_mem, exit_mem, cond_set)
@ -541,12 +542,13 @@ let print_summary : Typ.Procname.t -> Dom.Summary.t -> unit =
let checker : Callbacks.proc_callback_args -> Specs.summary = let checker : Callbacks.proc_callback_args -> Specs.summary =
fun {proc_desc; tenv; summary; get_proc_desc} -> fun {proc_desc; tenv; summary; get_proc_desc} ->
let proc_name = Specs.get_proc_name summary in
let proc_data = ProcData.make proc_desc tenv get_proc_desc in let proc_data = ProcData.make proc_desc tenv get_proc_desc in
Preanal.do_preanalysis proc_desc tenv ; Preanal.do_preanalysis proc_desc tenv ;
match compute_post proc_data with match compute_post summary proc_data with
| Some post -> | Some post ->
if Config.bo_debug >= 1 then print_summary proc_name post ; ( if Config.bo_debug >= 1 then
let proc_name = Specs.get_proc_name summary in
print_summary proc_name post ) ;
Summary.update_summary post summary Summary.update_summary post summary
| None -> | None ->
summary summary

Loading…
Cancel
Save