Module InferModules.Summary

Procedure summaries: the results of the capture and all the analysis for a single procedure, plus some statistics

module Stats : sig ... end
module Status : sig ... end
type t = {
payloads : Payloads.t;
sessions : int InferStdlib.IStd.ref;

(** Session number: how many nodes went through symbolic execution *)

stats : Stats.t;
status : Status.t;
proc_desc : InferIR.Procdesc.t;
}

summary of a procedure name

val dummy : t

dummy summary for testing

val add : InferIR.Typ.Procname.t ‑> t ‑> unit

Add the summary to the table for the given function

val has_model : InferIR.Typ.Procname.t ‑> bool

Check if a summary for a given procedure exists in the models directory

val clear_cache : unit ‑> unit

remove all the elements from the cache of summaries

val get : InferIR.Typ.Procname.t ‑> t option

Return the summary option for the procedure name

val get_proc_name : t ‑> InferIR.Typ.Procname.t

Get the procedure name

val get_proc_desc : t ‑> InferIR.Procdesc.t
val get_attributes : t ‑> InferIR.ProcAttributes.t

Get the attributes of the procedure.

val get_formals : t ‑> (InferIR.Mangled.t * InferIR.Typ.t) list

Get the formal parameters of the procedure

val get_err_log : t ‑> InferIR.Errlog.t
val get_loc : t ‑> InferBase.Location.t
val get_signature : t ‑> string

Return the signature of a procedure declaration as a string

val get_unsafe : InferIR.Typ.Procname.t ‑> t
val get_status : t ‑> Status.t

Return the status (active v.s. inactive) of a procedure summary

val reset : InferIR.Procdesc.t ‑> t

Reset a summary rebuilding the dependents and preserving the proc attributes if present.

val load_from_file : InferBase.DB.filename ‑> t option
val pp_html : InferBase.SourceFile.t ‑> InferStdlib.Pp.color ‑> Format.formatter ‑> t ‑> unit

Print the summary in html format

val pp_text : Format.formatter ‑> t ‑> unit

Print the summary in text format

val pdesc_resolve_attributes : InferIR.Procdesc.t ‑> InferIR.ProcAttributes.t

Like proc_resolve_attributes but start from a proc_desc.

val proc_resolve_attributes : InferIR.Typ.Procname.t ‑> InferIR.ProcAttributes.t option

Try to find the attributes for a defined proc. First look at specs (to get attributes computed by analysis) then look at the attributes table. If no attributes can be found, return None.

val proc_is_library : InferIR.ProcAttributes.t ‑> bool

Check if the procedure is from a library: It's not defined, and there is no spec file for it.

val store : t ‑> unit

Save summary for the procedure into the spec database