PulseAbductiveDomain.Summarytype summary = private tprivate type to make sure of_post is always called when creating summaries and that it is not called twice
val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.tval add_need_dynamic_type_specialization :
Pulselib.PulseBasicInterface.AbstractValue.t ->
summary ->
summaryval of_post :
IR.Procname.t ->
IR.ProcAttributes.t ->
IBase.Location.t ->
t ->
(summary,
[> `JavaResourceLeak of
summary
* t
* IR.JavaClassName.t
* Pulselib.PulseBasicInterface.Trace.t
* IBase.Location.t
| `HackUnawaitedAwaitable of
summary * t * Pulselib.PulseBasicInterface.Trace.t * IBase.Location.t
| `CSharpResourceLeak of
summary
* t
* IR.CSharpClassName.t
* Pulselib.PulseBasicInterface.Trace.t
* IBase.Location.t
| `MemoryLeak of
summary
* t
* Pulselib.PulseBasicInterface.Attribute.allocator
* Pulselib.PulseBasicInterface.Trace.t
* IBase.Location.t
| `PotentialInvalidAccessSummary of
summary
* t
* DecompilerExpr.t
* (Pulselib.PulseBasicInterface.Trace.t
* Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason
option) ])
IStdlib.IStd.result
Pulselib.PulseBasicInterface.SatUnsat.tTrim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state.
val pp : F.formatter -> summary -> unitval get_pre : summary -> BaseDomain.tval get_post : summary -> BaseDomain.tval get_path_condition : summary -> Pulselib.PulseBasicInterface.Formula.tval get_topl : summary -> PulseTopl.stateval heap_paths_that_need_dynamic_type_specialization :
summary ->
Pulselib.PulseBasicInterface.AbstractValue.t IR.Specialization.HeapPath.Map.tval get_recursive_calls : summary -> PulseMutualRecursion.Set.tval get_skipped_calls : summary -> Pulselib.PulseBasicInterface.SkippedCalls.tval is_heap_allocated :
summary ->
Pulselib.PulseBasicInterface.AbstractValue.t ->
boolwhether the abstract value provided has edges in the pre or post heap
val get_must_be_valid :
Pulselib.PulseBasicInterface.AbstractValue.t ->
summary ->
(Pulselib.PulseBasicInterface.Timestamp.t
* Pulselib.PulseBasicInterface.Trace.t
* Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason option)
optionval remove_all_must_not_be_tainted :
?kinds:Pulselib.PulseBasicInterface.TaintConfig.Kind.Set.t ->
summary ->
summaryval pre_heap_has_assumptions : summary -> boolwhether the pre heap encodes some assumptions about values: either a value is restricted (>= 0) or there is sharing in the heap. Both represent implicit assumptions that the program must have made.
type t = summaryinclude Ppx_compare_lib.Comparable.S with type t := tval compare : t Base__Ppx_compare_lib.compareinclude Ppx_compare_lib.Equal.S with type t := tval equal : t Base__Ppx_compare_lib.equalval yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.tval get_transitive_info : t -> Pulselib.PulseBasicInterface.TransitiveInfo.t