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`

- Deprecated Return the summary for the procedure name. Raises an exception when not found.

`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