You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
3.0 KiB

(*
* Copyright (c) 2009-2013, Monoidics ltd.
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
open! IStd
(** Procedure summaries: the results of the capture and all the analysis for a single procedure,
plus some statistics *)
module Stats : sig
(** Execution statistics *)
type t
val add_visited : t -> int -> unit
val is_visited : t -> int -> bool
val nb_visited : t -> int
val update : ?add_symops:int -> ?failure_kind:SymOp.failure_kind -> t -> t
val failure_kind : t -> SymOp.failure_kind option
val failure_kind_to_string : t -> string
val symops : t -> int
end
module Status : sig
(** Analysis status of the procedure *)
type t
val is_analyzed : t -> bool
val to_string : t -> string
end
(** summary of a procedure name *)
type t =
{ payloads: Payloads.t
; sessions: int ref (** Session number: how many nodes went through symbolic execution *)
; stats: Stats.t
; status: Status.t
; proc_desc: Procdesc.t
; err_log: Errlog.t }
val dummy : t
(** dummy summary for testing *)
val has_model : 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 : Typ.Procname.t -> t option
(** Return the summary option for the procedure name *)
val get_proc_name : t -> Typ.Procname.t
(** Get the procedure name *)
val get_proc_desc : t -> Procdesc.t
val get_attributes : t -> ProcAttributes.t
(** Get the attributes of the procedure. *)
val get_formals : t -> (Mangled.t * Typ.t) list
(** Get the formal parameters of the procedure *)
val get_err_log : t -> Errlog.t
val get_loc : t -> Location.t
val get_signature : t -> string
(** Return the signature of a procedure declaration as a string *)
val get_status : t -> Status.t
(** Return the status (active v.s. inactive) of a procedure summary *)
val reset : Procdesc.t -> t
(** Reset a summary rebuilding the dependents and preserving the proc attributes if present. *)
val load_from_file : DB.filename -> t option
val pp_html : SourceFile.t -> Format.formatter -> t -> unit
(** Print the summary in html format *)
val pp_text : Format.formatter -> t -> unit
(** Print the summary in text format *)
val proc_resolve_attributes : Typ.Procname.t -> 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 : 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 *)
val reset_all : filter:Filtering.procedures_filter -> unit -> unit
module SummaryValue : Memcached.Value with type t = t option
module SummaryServer : Memcached.Server with module Value = SummaryValue