(* * Copyright (c) 2009 - 2013 Monoidics ltd. * Copyright (c) 2013 - present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. *) (** Interprocedural Analysis *) (** Analyze [proc_name] and return the updated summary. Use module {!Timeout } to call {!perform_analysis_phase } with a time limit, and then return the updated summary. Executed as a child process. *) val analyze_proc : Exe_env.t -> Procname.t -> Specs.summary (** Process the result of the analysis of [proc_name]: update the returned summary and add it to the spec table. Executed in the parent process as soon as a child process returns a result. *) val process_result : Exe_env.t -> (Procname.t * Cg.in_out_calls) -> Specs.summary -> unit (** Return true if the analysis of [proc_name] should be skipped. Called by the parent process before attempting to analyze a proc. *) val filter_out : Cg.t -> Procname.t -> bool (** Perform the analysis of an exe_env *) val do_analysis : Exe_env.t -> unit (** Print the stats for all the files in the exe_env *) val print_stats : Exe_env.t -> unit