You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
11 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Errdesc (infer.Biabduction.Errdesc)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">Biabduction</a> &#x00BB; Errdesc</nav><h1>Module <code>Biabduction.Errdesc</code></h1></header><aside><p>Create descriptions of analysis errors</p></aside><dl><dt class="spec value" id="val-vpath_find"><a href="#val-vpath_find" class="anchor"></a><code><span class="keyword">val</span> vpath_find : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/DecompiledExp/index.html#type-vpath">IR.DecompiledExp.vpath</a> * <span><a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a> option</span></code></dt><dd><p>find the dexp, if any, where the given value is stored also return the type of the value if found</p></dd></dl><dl><dt class="spec value" id="val-hpred_is_open_resource"><a href="#val-hpred_is_open_resource" class="anchor"></a><code><span class="keyword">val</span> hpred_is_open_resource : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <a href="../Predicates/index.html#type-hpred">Predicates.hpred</a> <span>&#45;&gt;</span> <span><a href="../../IR/PredSymb/index.html#type-resource">IR.PredSymb.resource</a> option</span></code></dt><dd><p>Check whether the hpred is a |-&gt; representing a resource in the Racquire state</p></dd></dl><dl><dt class="spec value" id="val-find_ident_assignment"><a href="#val-find_ident_assignment" class="anchor"></a><code><span class="keyword">val</span> find_ident_assignment : <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IR/Ident/index.html#type-t">IR.Ident.t</a> <span>&#45;&gt;</span> <span><span>(<a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> * <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a>)</span> option</span></code></dt><dd><p>Find a program variable assignment to id in the current node or predecessors.</p></dd></dl><dl><dt class="spec value" id="val-exp_rv_dexp"><a href="#val-exp_rv_dexp" class="anchor"></a><code><span class="keyword">val</span> exp_rv_dexp : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <span><a href="../../IR/DecompiledExp/index.html#type-t">IR.DecompiledExp.t</a> option</span></code></dt><dd><p>describe rvalue <code>e</code> as a dexp</p></dd></dl><dl><dt class="spec value" id="val-explain_array_access"><a href="#val-explain_array_access" class="anchor"></a><code><span class="keyword">val</span> explain_array_access : <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>Produce a description of the array access performed in the current instruction, if any.</p></dd></dl><dl><dt class="spec value" id="val-explain_class_cast_exception"><a href="#val-explain_class_cast_exception" class="anchor"></a><code><span class="keyword">val</span> explain_class_cast_exception : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> option</span> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain a class cast exception</p></dd></dl><dl><dt class="spec value" id="val-explain_dereference"><a href="#val-explain_dereference" class="anchor"></a><code><span class="keyword">val</span> explain_dereference : <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span>?&#8288;use_buckets:bool</span> <span>&#45;&gt;</span> <span>?&#8288;is_nullable:bool</span> <span>&#45;&gt;</span> <span>?&#8288;is_premature_nil:bool</span> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>Produce a description of which expression is dereferenced in the current instruction, if any.</p></dd></dl><dl><dt class="spec value" id="val-explain_dereference_as_caller_expression"><a href="#val-explain_dereference_as_caller_expression" class="anchor"></a><code><span class="keyword">val</span> explain_dereference_as_caller_expression : <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span>?&#8288;use_buckets:bool</span> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span><a href="../../IR/Pvar/index.html#type-t">IR.Pvar.t</a> list</span> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>return a description explaining value <code>exp</code> in <code>prop</code> in terms of a source expression using the formal parameters of the call</p></dd></dl><dl><dt class="spec value" id="val-explain_divide_by_zero"><a href="#val-explain_divide_by_zero" class="anchor"></a><code><span class="keyword">val</span> explain_divide_by_zero : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain a division by zero</p></dd></dl><dl><dt class="spec value" id="val-explain_condition_always_true_false"><a href="#val-explain_condition_always_true_false" class="anchor"></a><code><span class="keyword">val</span> explain_condition_always_true_false : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/IntLit/index.html#type-t">IR.IntLit.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain a condition which is always true or false</p></dd></dl><dl><dt class="spec value" id="val-explain_leak"><a href="#val-explain_leak" class="anchor"></a><code><span class="keyword">val</span> explain_leak : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../Predicates/index.html#type-hpred">Predicates.hpred</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Prop/index.html#type-t">Prop.t</a></span> <span>&#45;&gt;</span> <span><a href="../../IR/PredSymb/index.html#type-t">IR.PredSymb.t</a> option</span> <span>&#45;&gt;</span> <span>string option</span> <span>&#45;&gt;</span> bool * <a href="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>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.</p></dd></dl><dl><dt class="spec value" id="val-warning_err"><a href="#val-warning_err" class="anchor"></a><code><span class="keyword">val</span> warning_err : <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span><span>(<span class="type-var">'a</span>, Stdlib.Format.formatter, unit)</span> <a href="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.format</span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>warn at the given location</p></dd></dl><dl><dt class="spec value" id="val-find_outermost_dereference"><a href="#val-find_outermost_dereference" class="anchor"></a><code><span class="keyword">val</span> find_outermost_dereference : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <span><a href="../../IR/DecompiledExp/index.html#type-t">IR.DecompiledExp.t</a> option</span></code></dt><dt class="spec value" id="val-access_opt"><a href="#val-access_opt" class="anchor"></a><code><span class="keyword">val</span> access_opt : <span>?&#8288;is_nullable:bool</span> <span>&#45;&gt;</span> <a href="../Predicates/index.html#type-inst">Predicates.inst</a> <span>&#45;&gt;</span> <span><a href="../../Absint/Localise/index.html#type-access">Absint.Localise.access</a> option</span></code></dt></dl></div></body></html>