Create descriptions of analysis errors
val vpath_find : InferIR.Tenv.t ‑> 'a InferModules.Prop.t ‑> InferIR.Exp.t ‑> InferIR.DecompiledExp.vpath * InferIR.Typ.t option
find the dexp, if any, where the given value is stored also return the type of the value if found
val hpred_is_open_resource : InferIR.Tenv.t ‑> 'a InferModules.Prop.t ‑> InferIR.Sil.hpred ‑> InferIR.PredSymb.resource option
Check whether the hpred is a |-> representing a resource in the Racquire state
val find_normal_variable_funcall : InferIR.Procdesc.Node.t ‑> InferIR.Ident.t ‑> (InferIR.Exp.t * InferIR.Exp.t list * InferBase.Location.t * InferIR.CallFlags.t) option
Find the function call instruction used to initialize normal variable id
,
and return the function name and arguments
val find_program_variable_assignment : InferIR.Procdesc.Node.t ‑> InferIR.Pvar.t ‑> (InferIR.Procdesc.Node.t * InferIR.Ident.t) option
Find a program variable assignment in the current node or straightline predecessor.
val find_ident_assignment : InferIR.Procdesc.Node.t ‑> InferIR.Ident.t ‑> (InferIR.Procdesc.Node.t * InferIR.Exp.t) option
Find a program variable assignment to id in the current node or predecessors.
val find_boolean_assignment : InferIR.Procdesc.Node.t ‑> InferIR.Pvar.t ‑> bool ‑> InferIR.Procdesc.Node.t option
Find a boolean assignment to a temporary variable holding a boolean condition. The boolean parameter indicates whether the true or false branch is required.
val exp_rv_dexp : InferIR.Tenv.t ‑> InferIR.Procdesc.Node.t ‑> InferIR.Exp.t ‑> InferIR.DecompiledExp.t option
describe rvalue e
as a dexp
val explain_allocation_mismatch : InferIR.PredSymb.res_action ‑> InferIR.PredSymb.res_action ‑> InferIR.Localise.error_desc
Produce a description of a mismatch between an allocation function and a deallocation function
val explain_array_access : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> InferIR.Localise.deref_str ‑> 'a InferModules.Prop.t ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
Produce a description of the array access performed in the current instruction, if any.
val explain_class_cast_exception : InferIR.Tenv.t ‑> InferIR.Typ.Procname.t option ‑> InferIR.Exp.t ‑> InferIR.Exp.t ‑> InferIR.Exp.t ‑> InferIR.Procdesc.Node.t ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
explain a class cast exception
val explain_deallocate_stack_var : InferIR.Pvar.t ‑> InferIR.PredSymb.res_action ‑> InferIR.Localise.error_desc
Explain a deallocate stack variable error
val explain_deallocate_constant_string : string ‑> InferIR.PredSymb.res_action ‑> InferIR.Localise.error_desc
Explain a deallocate constant string error
val explain_dereference : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> ?use_buckets:bool ‑> ?is_nullable:bool ‑> ?is_premature_nil:bool ‑> InferIR.Localise.deref_str ‑> 'a InferModules.Prop.t ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
Produce a description of which expression is dereferenced in the current instruction, if any.
val explain_dereference_as_caller_expression : InferIR.Typ.Procname.t ‑> InferIR.Tenv.t ‑> ?use_buckets:bool ‑> InferIR.Localise.deref_str ‑> 'a InferModules.Prop.t ‑> 'b InferModules.Prop.t ‑> InferIR.Exp.t ‑> InferIR.Procdesc.Node.t ‑> InferBase.Location.t ‑> InferIR.Pvar.t list ‑> InferIR.Localise.error_desc
return a description explaining value exp
in prop
in terms of a source expression
using the formal parameters of the call
val explain_divide_by_zero : InferIR.Tenv.t ‑> InferIR.Exp.t ‑> InferIR.Procdesc.Node.t ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
explain a division by zero
val explain_condition_always_true_false : InferIR.Tenv.t ‑> InferIR.IntLit.t ‑> InferIR.Exp.t ‑> InferIR.Procdesc.Node.t ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
explain a condition which is always true or false
val explain_unreachable_code_after : InferBase.Location.t ‑> InferIR.Localise.error_desc
val explain_stack_variable_address_escape : InferBase.Location.t ‑> InferIR.Pvar.t ‑> InferIR.DecompiledExp.t option ‑> InferIR.Localise.error_desc
explain the escape of a stack variable address from its scope
val explain_frontend_warning : string ‑> string option ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
explain frontend warning
val explain_unary_minus_applied_to_unsigned_expression : InferIR.Tenv.t ‑> InferIR.Exp.t ‑> InferIR.Typ.t ‑> InferIR.Procdesc.Node.t ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
explain unary minus applied to unsigned expression
val explain_leak : InferIR.Tenv.t ‑> InferIR.Sil.hpred ‑> 'a InferModules.Prop.t ‑> InferIR.PredSymb.t option ‑> string option ‑> InferIR.Exceptions.visibility * InferIR.Localise.error_desc
Produce a description of a leak by looking at the current state. If the current instruction is a variable nullify, blame the variable. If it is an abstraction, blame any variable nullify at the current node. If there is an alloc attribute, print the function call and line number.
val explain_null_test_after_dereference : InferIR.Tenv.t ‑> InferIR.Exp.t ‑> InferIR.Procdesc.Node.t ‑> int ‑> InferBase.Location.t ‑> InferIR.Localise.error_desc
explain a test for NULL of a dereferenced pointer
val warning_err : InferBase.Location.t ‑> ('a, Format.formatter, unit) InferStdlib.IStd.format ‑> 'a
warn at the given location
val find_outermost_dereference : InferIR.Tenv.t ‑> InferIR.Procdesc.Node.t ‑> InferIR.Exp.t ‑> InferIR.DecompiledExp.t option
val access_opt : ?is_nullable:bool ‑> InferIR.Sil.inst ‑> InferIR.Localise.access option