Backend.CallbacksModule to register and invoke checkers' callbacks.
type proc_callback_args = {summary : Summary.t;exe_env : Absint.Exe_env.t;proc_desc : IR.Procdesc.t;}Type of a procedure callback:
type proc_callback_t = proc_callback_args -> Summary.ttype proc_callback_with_specialization_t =
?specialization:IR.Specialization.t ->
proc_callback_ttype file_callback_args = {procedures : IR.Procname.t list;source_file : IBase.SourceFile.t;exe_env : Absint.Exe_env.t;}type file_callback_t = file_callback_args -> Absint.IssueLog.tResult is a list of additional issues found at this stage (complementary to issues generated on per-procedure analysis stage)
val register_procedure_callback :
IBase.Checker.t ->
?dynamic_dispatch:bool ->
IBase.Language.t ->
proc_callback_t ->
unitRegister a procedure callback (see details above)
val register_procedure_callback_with_specialization :
IBase.Checker.t ->
?dynamic_dispatch:bool ->
IBase.Language.t ->
proc_callback_with_specialization_t ->
is_already_specialized:(IR.Specialization.t -> Summary.t -> bool) ->
unitSame as register_procedure_callback with specialization
val register_file_callback :
IBase.Checker.t ->
IBase.Language.t ->
file_callback_t ->
unitRegister a file callback (see details above). issues_dir must be unique for this type of checker.
val iterate_procedure_callbacks :
Absint.Exe_env.t ->
IBase.AnalysisRequest.t ->
?specialization:IR.Specialization.t ->
Summary.t ->
IR.Procdesc.t ->
Summary.tInvoke all registered procedure callbacks on the given procedure.
val is_specialized_for : IR.Specialization.t -> Summary.t -> boolCheck if all callbacks are specialized wrt the given specialization
val iterate_file_callbacks_and_store_issues :
IR.Procname.t list ->
Absint.Exe_env.t ->
IBase.SourceFile.t ->
unitInvoke all registered file callbacks on a file, and store produced errors in a corresponding directory. Guaranteed to be called after all procedure-level callbacks are invoked