<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IBase__Checker (infer.IBase__Checker)</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; IBase__Checker</nav><h1>Module <code>IBase__Checker</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = </code><table class="variant"><tr id="type-t.AnnotationReachability" class="anchored"><td class="def constructor"><a href="#type-t.AnnotationReachability" class="anchor"></a><code>| </code><code><span class="constructor">AnnotationReachability</span></code></td></tr><tr id="type-t.Biabduction" class="anchored"><td class="def constructor"><a href="#type-t.Biabduction" class="anchor"></a><code>| </code><code><span class="constructor">Biabduction</span></code></td></tr><tr id="type-t.BufferOverrunAnalysis" class="anchored"><td class="def constructor"><a href="#type-t.BufferOverrunAnalysis" class="anchor"></a><code>| </code><code><span class="constructor">BufferOverrunAnalysis</span></code></td></tr><tr id="type-t.BufferOverrunChecker" class="anchored"><td class="def constructor"><a href="#type-t.BufferOverrunChecker" class="anchor"></a><code>| </code><code><span class="constructor">BufferOverrunChecker</span></code></td></tr><tr id="type-t.ConfigChecksBetweenMarkers" class="anchored"><td class="def constructor"><a href="#type-t.ConfigChecksBetweenMarkers" class="anchor"></a><code>| </code><code><span class="constructor">ConfigChecksBetweenMarkers</span></code></td></tr><tr id="type-t.Cost" class="anchored"><td class="def constructor"><a href="#type-t.Cost" class="anchor"></a><code>| </code><code><span class="constructor">Cost</span></code></td></tr><tr id="type-t.Eradicate" class="anchored"><td class="def constructor"><a href="#type-t.Eradicate" class="anchor"></a><code>| </code><code><span class="constructor">Eradicate</span></code></td></tr><tr id="type-t.FragmentRetainsView" class="anchored"><td class="def constructor"><a href="#type-t.FragmentRetainsView" class="anchor"></a><code>| </code><code><span class="constructor">FragmentRetainsView</span></code></td></tr><tr id="type-t.ImmutableCast" class="anchored"><td class="def constructor"><a href="#type-t.ImmutableCast" class="anchor"></a><code>| </code><code><span class="constructor">ImmutableCast</span></code></td></tr><tr id="type-t.Impurity" class="anchored"><td class="def constructor"><a href="#type-t.Impurity" class="anchor"></a><code>| </code><code><span class="constructor">Impurity</span></code></td></tr><tr id="type-t.InefficientKeysetIterator" class="anchored"><td class="def constructor"><a href="#type-t.InefficientKeysetIterator" class="anchor"></a><code>| </code><code><span class="constructor">InefficientKeysetIterator</span></code></td></tr><tr id="type-t.Linters" class="anchored"><td class="def constructor"><a href="#type-t.Linters" class="anchor"></a><code>| </code><code><span class="constructor">Linters</span></code></td></tr><tr id="type-t.LithoRequiredProps" class="anchored"><td class="def constructor"><a href="#type-t.LithoRequiredProps" class="anchor"></a><code>| </code><code><span class="constructor">LithoRequiredProps</span></code></td></tr><tr id="type-t.Liveness" class="anchored"><td class="def constructor"><a href="#type-t.Liveness" class="anchor"></a><code>| </code><code><span class="constructor">Liveness</span></code></td></tr><tr id="type-t.LoopHoisting" class="anchored"><td class="def constructor"><a href="#type-t.LoopHoisting" class="anchor"></a><code>| </code><code><span class="constructor">LoopHoisting</span></code></td></tr><tr id="type-t.NullsafeDeprecated" class="anchored"><td class="def constructor"><a href="#type-t.NullsafeDeprecated" class="anchor"></a><code>| </code><code><span class="constructor">NullsafeDeprecated</span></code></td></tr><tr id="type-t.PrintfArgs" class="anchored"><td class="def constructor"><a href="#type-t.PrintfArgs" class="anchor"></a><code>| </code><code><span class="constructor">PrintfArgs</span></code></td></tr><tr id="type-t.Pulse" class="anchored"><td class="def constructor"><a href="#type-t.Pulse" class="anchor"></a><code>| </code><code><span class="constructor">Pulse</span></code></td></tr><tr id="type-t.PurityAnalysis" class="anchored"><td class="def constructor"><a href="#type-t.PurityAnalysis" class="anchor"></a><code>| </code><code><span class="constructor">PurityAnalysis</span></code></td></tr><tr id="type-t.PurityChecker" class="anchored"><td class="def constructor"><a href="#type-t.PurityChecker" class="anchor"></a><code>| </code><code><span class="constructor">PurityChecker</span></code></td></tr><tr id="type-t.Quandary" class="anchored"><td class="def constructor"><a href="#type-t.Quandary" class="anchor"></a><code>| </code><code><span class="constructor">Quandary</span></code></td></tr><tr id="type-t.RacerD" class="anchored"><td class="def constructor"><a href="#type-t.RacerD" class="anchor"></a><code>| </code><code><span class="constructor">RacerD</span></code></td></tr><tr id="type-t.ResourceLeakLabExercise" class="anchored"><td class="def constructor"><a href="#type-t.ResourceLeakLabExercise" class="anchor"></a><code>| </code><code><span class="constructor">ResourceLeakLabExercise</span></code></td></tr><tr id="type-t.SIOF" class="anchored"><td class="def constructor"><a href="#type-t.SIOF" class="anchor"></a><code>| </code><code><span class="constructor">SIOF</span></code></td></tr><tr id="type-t.SelfInBlock" class="anchored"><td class="def constructor"><a href="#type-t.SelfInBlock" class="anchor"></a><code>| </code><code><span class="constructor">SelfInBlock</span></code></td></tr><tr id="type-t.Starvation" class="anchored"><td class="def constructor"><a href="#type-t.Starvation" class="anchor"></a><code>| </code><code><span class="constructor">Starvation</span></code></td></tr><tr id="type-t.ToplOnBiabduction" class="anchored"><td class="def constructor"><a href="#type-t.ToplOnBiabduction" class="anchor"></a><code>| </code><code><span class="constructor">ToplOnBiabduction</span></code></td></tr><tr id="type-t.ToplOnPulse" class="anchored"><td class="def constructor"><a href="#type-t.ToplOnPulse" class="anchor"></a><code>| </code><code><span class="constructor">ToplOnPulse</span></code></td></tr><tr id="type-t.Uninit" class="anchored"><td class="def constructor"><a href="#type-t.Uninit" class="anchor"></a><code>| </code><code><span class="constructor">Uninit</span></code></td></tr></table></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-all"><a href="#val-all" class="anchor"></a><code><span class="keyword">val</span> all : <span><a href="index.html#type-t">t</a> list</span></code></dt></dl></div></div></div><dl><dt class="spec type" id="type-support"><a href="#type-support" class="anchor"></a><code><span class="keyword">type</span> support</code><code> = </code><table class="variant"><tr id="type-support.NoSupport" class="anchored"><td class="def constructor"><a href="#type-support.NoSupport" class="anchor"></a><code>| </code><code><span class="constructor">NoSupport</span></code></td><td class="doc"><p>checker does not run at all for this language</p></td></tr><tr id="type-support.ExperimentalSupport" class="anchored"><td class="def constructor"><a href="#type-support.ExperimentalSupport" class="anchor"></a><code>| </code><code><span class="constructor">ExperimentalSupport</span></code></td><td class="doc"><p>checker runs but is not expected to give reasonable results</p></td></tr><tr id="type-support.Support" class="anchored"><td class="def constructor"><a href="#type-support.Support" class="anchor"></a><code>| </code><code><span class="constructor">Support</span></code></td><td class="doc"><p>checker is expected to give reasonable results</p></td></tr></table></dt><dd><p>per-language support for each checker</p></dd></dl><dl><dt class="spec type" id="type-cli_flags"><a href="#type-cli_flags" class="anchor"></a><code><span class="keyword">type</span> cli_flags</code><code> = </code><code>{</code><table class="record"><tr id="type-cli_flags.deprecated" class="anchored"><td class="def field"><a href="#type-cli_flags.deprecated" class="anchor"></a><code>deprecated : <span>string list</span>;</code></td><td class="doc"><p>More command-line flags, similar to <code>~deprecated</code> arguments in <code>CommandLineOption</code>.</p></td></tr><tr id="type-cli_flags.show_in_help" class="anchored"><td class="def field"><a href="#type-cli_flags.show_in_help" class="anchor"></a><code>show_in_help : bool;</code></td></tr></table><code>}</code></dt><dt class="spec type" id="type-kind"><a href="#type-kind" class="anchor"></a><code><span class="keyword">type</span> kind</code><code> = </code><table class="variant"><tr id="type-kind.UserFacing" class="anchored"><td class="def constructor"><a href="#type-kind.UserFacing" class="anchor"></a><code>| </code><code><span class="constructor">UserFacing</span> <span class="keyword">of</span> </code><code>{</code><table class="record"><tr id="type-kind.title" class="anchored"><td class="def field"><a href="#type-kind.title" class="anchor"></a><code>title : string;</code></td><td class="doc"><p>the title of the documentation web page</p></td></tr><tr id="type-kind.markdown_body" class="anchored"><td class="def field"><a href="#type-kind.markdown_body" class="anchor"></a><code>markdown_body : string;</code></td><td class="doc"><p>main text of the documentation</p></td></tr></table><code>}</code></td><td class="doc"><p>can report issues to users</p></td></tr><tr id="type-kind.UserFacingDeprecated" class="anchored"><td class="def constructor"><a href="#type-kind.UserFacingDeprecated" class="anchor"></a><code>| </code><code><span class="constructor">UserFacingDeprecated</span> <span class="keyword">of</span> </code><code>{</code><table class="record"><tr id="type-kind.title" class="anchored"><td class="def field"><a href="#type-kind.title" class="anchor"></a><code>title : string;</code></td><td class="doc"><p>the title of the documentation web page</p></td></tr><tr id="type-kind.markdown_body" class="anchored"><td class="def field"><a href="#type-kind.markdown_body" class="anchor"></a><code>markdown_body : string;</code></td><td class="doc"><p>main text of the documentation</p></td></tr><tr id="type-kind.deprecation_message" class="anchored"><td class="def field"><a href="#type-kind.deprecation_message" class="anchor"></a><code>deprecation_message : string;</code></td></tr></table><code>}</code></td><td class="doc"><p>can report issues to users but should probably be deleted from infer</p></td></tr><tr id="type-kind.Internal" class="anchored"><td class="def constructor"><a href="#type-kind.Internal" class="anchor"></a><code>| </code><code><span class="constructor">Internal</span></code></td><td class="doc"><p>Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.</p></td></tr><tr id="type-kind.Exercise" class="anchored"><td class="def constructor"><a href="#type-kind.Exercise" class="anchor"></a><code>| </code><code><span class="constructor">Exercise</span></code></td><td class="doc"><p>reserved for the &quot;resource leak&quot; lab exercise</p></td></tr></table></dt><dt class="spec type" id="type-config"><a href="#type-config" class="anchor"></a><code><span class="keyword">type</span> config</code><code> = </code><code>{</code><table class="record"><tr id="type-config.id" class="anchored"><td class="def field"><a href="#type-config.id" class="anchor"></a><code>id : string;</code></td><td class="doc"><p>Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.</p></td></tr><tr id="type-config.kind" class="anchored"><td class="def field"><a href="#type-config.kind" class="anchor"></a><code>kind : <a href="index.html#type-kind">kind</a>;</code></td></tr><tr id="type-config.support" class="anchored"><td class="def field"><a href="#type-config.support" class="anchor"></a><code>support : <a href="../IBase/Language/index.html#type-t">IBase.Language.t</a> <span>&#45;&gt;</span> <a href="index.html#type-support">support</a>;</code></td></tr><tr id="type-config.short_documentation" class="anchored"><td class="def field"><a href="#type-config.short_documentation" class="anchor"></a><code>short_documentation : string;</code></td><td class="doc"><p>used in man pages and as a short intro on the website</p></td></tr><tr id="type-config.cli_flags" class="anchored"><td class="def field"><a href="#type-config.cli_flags" class="anchor"></a><code>cli_flags : <span><a href="index.html#type-cli_flags">cli_flags</a> option</span>;</code></td><td class="doc"><p>If <code>None</code> then the checker cannot be enabled/disabled from the command line.</p></td></tr><tr id="type-config.enabled_by_default" class="anchored"><td class="def field"><a href="#type-config.enabled_by_default" class="anchor"></a><code>enabled_by_default : bool;</code></td></tr><tr id="type-config.activates" class="anchored"><td class="def field"><a href="#type-config.activates" class="anchor"></a><code>activates : <span><a href="index.html#type-t">t</a> list</span>;</code></td><td class="doc"><p>list of checkers that get enabled when this checker is enabled</p></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-config"><a href="#val-config" class="anchor"></a><code><span class="keyword">val</span> config : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-config">config</a></code></dt><dt class="spec value" id="val-get_id"><a href="#val-get_id" class="anchor"></a><code><span class="keyword">val</span> get_id : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> string</code></dt><dd><p><code>get_id c</code> is <code>(config c).id</code></p></dd></dl><dl><dt class="spec value" id="val-from_id"><a href="#val-from_id" class="anchor"></a><code><span class="keyword">val</span> from_id : string <span>&#45;&gt;</span> <span><a href="index.html#type-t">t</a> option</span></code></dt></dl></div></body></html>