Module Absint.AnalysisCallbacks

Analysis API

val get_proc_desc : IR.Procname.t -> IR.Procdesc.t option

set to Ondemand.get_proc_desc

val html_debug_new_node_session : ?⁠kind:[ `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> pp_name:(Stdlib.Format.formatter -> unit) -> IR.Procdesc.Node.t -> f:(unit -> 'a) -> 'a

set to NodePrinter.with_session

val proc_resolve_attributes : IR.Procname.t -> IR.ProcAttributes.t option

set to Summary.OnDisk.proc_resolve_attributes

Callbacks management

type callbacks = {
get_proc_desc_f : IR.Procname.t -> IR.Procdesc.t option;
html_debug_new_node_session_f : a. ?⁠kind:[ `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> pp_name:(Stdlib.Format.formatter -> unit) -> IR.Procdesc.Node.t -> f:(unit -> 'a) -> 'a;
proc_resolve_attributes_f : IR.Procname.t -> IR.ProcAttributes.t option;
}

These callbacks are used to break the dependency cycles between some modules. Specifically, we put here functions needed for the analysis that depend on modules higher up the dependency graph than this library but whose type does not.

val set_callbacks : callbacks -> unit

make sure this is called before starting any actual analysis