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>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Callbacks (infer.Backend.Callbacks)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Backend</a>» Callbacks</nav><h1>Module <code>Backend.Callbacks</code></h1></header><aside><p>Module to register and invoke checkers' callbacks.</p></aside><dl><dtclass="spec type"id="type-proc_callback_args"><ahref="#type-proc_callback_args"class="anchor"></a><code><spanclass="keyword">type</span> proc_callback_args</code><code> = </code><code>{</code><tableclass="record"><trid="type-proc_callback_args.summary"class="anchored"><tdclass="def field"><ahref="#type-proc_callback_args.summary"class="anchor"></a><code>summary : <ahref="../Summary/index.html#type-t">Summary.t</a>;</code></td></tr><trid="type-proc_callback_args.exe_env"class="anchored"><tdclass="def field"><ahref="#type-proc_callback_args.exe_env"class="anchor"></a><code>exe_env : <ahref="../../Absint/Exe_env/index.html#type-t">Absint.Exe_env.t</a>;</code></td></tr></table><code>}</code></dt><dd><p>Type of a procedure callback:</p><ul><li>List of all the procedures the callback will be called on.</li><li>get_proc_desc to get a proc desc from a proc name</li><li>Type environment.</li><li>Procedure for the callback to act on.</li></ul></dd></dl><dl><dtclass="spec type"id="type-proc_callback_t"><ahref="#type-proc_callback_t"class="anchor"></a><code><spanclass="keyword">type</span> proc_callback_t</code><code> = <ahref="index.html#type-proc_callback_args">proc_callback_args</a><span>-></span><ahref="../Summary/index.html#type-t">Summary.t</a></code></dt><dtclass="spec type"id="type-file_callback_args"><ahref="#type-file_callback_args"class="anchor"></a><code><spanclass="keyword">type</span> file_callback_args</code><code> = </code><code>{</code><tableclass="record"><trid="type-file_callback_args.procedures"class="anchored"><tdclass="def field"><ahref="#type-file_callback_args.procedures"class="anchor"></a><code>procedures : <span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a> list</span>;</code></td></tr><trid="type-file_callback_args.source_file"class="anchored"><tdclass="def field"><ahref="#type-file_callback_args.source_file"class="anchor"></a><code>source_file : <ahref="../../IBase/SourceFile/index.html#type-t">IBase.SourceFile.t</a>;</code></td></tr><trid="type-file_callback_args.exe_env"class="anchored"><tdclass="def field"><ahref="#type-file_callback_args.exe_env"class="anchor"></a><code>exe_env : <ahref="../../Absint/Exe_env/index.html#type-t">Absint.Exe_env.t</a>;</code></td></tr></table><code>}</code></dt><dtclass="spec type"id="type-file_callback_t"><ahref="#type-file_callback_t"class="anchor"></a><code><spanclass="keyword">type</span> file_callback_t</code><code> = <ahref="index.html#type-file_callback_args">file_callback_args</a><span>-></span><ahref="../../Absint/IssueLog/index.html#type-t">Absint.IssueLog.t</a></code></dt><dd><p>Result is a list of additional issues found at this stage (complementary to issues generated on per-procedure analysis stage)</p></dd></dl><dl><dtclass="spec value"id="val-register_procedure_callback"><ahref="#val-register_procedure_callback"class="anchor"></a><code><spanclass="keyword">val</span> register_procedure_callback : <span>checker_name:string</span><span>-></span><span>?⁠dynamic_dispatch:bool</span><span>-></span><ahref="../../IBase/Language/index.html#type-t">IBase.Language.t</a><span>-></span><ahref="index.html#type-proc_callback_t">proc_callback_t</a><span>-></span> unit</code></dt><dd><p>Register a procedure callback (see details above)</p></dd></dl><dl><dtclass="spec value"id="val-register_file_callback"><ahref="#val-register_file_callback"class="anchor"></a><code><spanclass="keyword">val</span> register_file_callback : <span>checker_name:string</span><span>-></span><ahref="../../IBase/Language/index.html#type-t">IBase.Language.t</a><span>-></span><ahref="index.html#type-file_callback_t">file_callback_t</a><span>-></span><span>issue_dir:<ahref="../../IBase/ResultsDirEntryName/index.html#type-id">IBase.ResultsDirEntryName.id</a></span><span>-></span> unit</code></dt><dd><p>Register a file callback (see details above). <code>issues_dir</code> must be unique for this type of checker.</p></dd></dl><dl><dtclass="spec value"id="val-iterate_procedure_callbacks"><ahref="#val-iterate_procedure_callbacks"class="anchor"></a><code><spanclass="keyword">val</span> iterate_procedure_callbacks : <ahref="../../Absint/Exe_env/index.html#type-t">Absint.Exe_env.t</a><span>-></span><ahref="../Summary/index.html#type-t">Summary.t</a><span>-></span><ahref="../Summary/index.html#type-t">Summary.t</a></code></dt><dd><p>Invoke all registered procedure callbacks on the given procedure.</p></dd></dl><dl><dtclass="spec value"id="val-iterate_file_callbacks_and_store_issues"><ahref="#val-iterate_file_callbacks_and_store_issues"class="anchor"></a><code><spanclass="keyword">val</span> iterate_file_callbacks_and_store_issues : <span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a> list</span><span>-></span><ahref="../../Absint/Exe_env/index.html#type-t">Absint.Exe_env.t</a><span>-></span><ahref="../../IBase/SourceFile/index.html#type-t">IBase.SourceFile.t</a><span>-></span> unit</code></dt><dd><p>Invoke 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</p></dd></dl></div></body></html>