Module Backend.CallbackOfChecker

val mk_interprocedural_field_t : (Payloads.t'payload option) IStdlib.IStd.Field.t -> Absint.Exe_env.t -> Summary.t -> ?⁠tenv:IR.Tenv.t -> unit -> 'payload Absint.InterproceduralAnalysis.t * Summary.Stats.t IStdlib.IStd.ref
val interprocedural : f_analyze_dep:(IR.Procdesc.t -> 'payloads_orig -> (IR.Procdesc.t * 'payloads) option) -> get_payload:(Payloads.t -> 'payloads_orig) -> set_payload:(Payloads.t -> 'payload_checker -> Payloads.t) -> ('payloads Absint.InterproceduralAnalysis.t -> 'payload_checker) -> Callbacks.proc_callback_t

the general form of interprocedural checkers: can read and update several payloads, and massage analysis results (mostly used to join option types)

val interprocedural_with_field : (Payloads.t'payload option) IStdlib.IStd.Field.t -> ('payload Absint.InterproceduralAnalysis.t -> 'payload option) -> Callbacks.proc_callback_t

interprocedural field checker expects checker to compute a payload (option) suitable for field, given an inter-procedural analysis of callees that computes the same payload type

val interprocedural_file : (Payloads.t'payload option) IStdlib.IStd.Field.t -> ('payload Absint.InterproceduralAnalysis.file_t -> Absint.IssueLog.t) -> Callbacks.file_callback_t

interprocedural_file field checker expects checker to compute an IssueLog.t from the file-level analysis, given an inter-procedural analysis of dependencies that computes the payload type corresponding to field

val intraprocedural : (Absint.IntraproceduralAnalysis.t -> unit) -> Callbacks.proc_callback_t

runs a simple intra-procedural analysis (one that doesn't need the results of the analysis on any transitive dependencies to analyze a given procedure)

val intraprocedural_with_field_dependency : (Payloads.t'payload) IStdlib.IStd.Field.t -> (Absint.IntraproceduralAnalysis.t -> 'payload -> unit) -> Callbacks.proc_callback_t

an intra-procedural analysis that depends on the summary payload found by another

val intraprocedural_with_field : (Payloads.t'payload option) IStdlib.IStd.Field.t -> (Absint.IntraproceduralAnalysis.t -> 'payload option) -> Callbacks.proc_callback_t

runs an intra-procedural analysis that nonetheless produces a payload