[pulse] Updating Pulse website

Summary: Adding more info to Pulse webpage

Reviewed By: jvillard

Differential Revision: D26884576

fbshipit-source-id: a6f13757f
master
Gabriela Cunha Sampaio 4 years ago committed by Facebook GitHub Bot
parent cba144b779
commit c736015316

@ -0,0 +1,56 @@
### What is Infer:Pulse?
Pulse is an interprocedural memory safety analysis. Pulse can detect, for instance, [Null dereferences](/docs/next/all-issue-types#nullptr_dereference) in Java. Errors are only reported when all conditions on the erroneous path are true regardless of input. Pulse should gradually replace the original [biabduction](/docs/next/checker-biabduction) analysis of Infer. An example of a Null dereference found by Pulse is given below.
```java
class Person {
Person emergencyContact;
String address;
Person getEmergencyContact() {
return this.emergencyContact;
}
}
class Registry {
void create() {
Person p = new Person();
Person c = p.getEmergencyContact();
// Null dereference here
System.out.println(c.address);
}
void printContact(Person p) {
// No null dereference, as we don't know anything about `p`
System.out.println(p.getEmergencyContact().address);
}
}
```
How to run pulse for Java:
```bash
infer run --pulse -- javac Test.java
```
Pulse reports a Null dereference on this file on `create()`, as it tries to access the field `address` of object `c`, and `c` has value `null`. In contrast, Pulse gives no report for `printContact(Person p)`, as we cannot be sure that `p.getEmergencyContact()` will return `null`. Pulse then labels this error as latent and only reports if there is a call to `printContact(Person p)` satisfying the condition for Null dereference.
### Pulse x Nullsafe
[Nullsafe](/docs/next/checker-eradicate) is a type checker for `@Nullable` annotations for Java. Classes following the Nullsafe discipline are annotated with `@Nullsafe`.
Consider the classes `Person` and `Registry` from the previous example. Assuming that class `Person` is annotated with `@Nullsafe`. In this case, we also annotate `getEmergencyContact()` with `@Nullable`, to make explicit that this method can return the `null` value. There is still the risk that classes depending on `Person` have Null dereferences. In this case, Pulse would report a Null dereference on `Registry`. It could also be the case that class `Registry` is annotated with `@Nullsafe`. By default Pulse reports on `@Nullsafe` files too, see the `--pulse-nullsafe-report-npe` option (Facebook-specific: Pulse does not report on `@Nullsafe` files).
```java
@Nullsafe(Nullsafe.Mode.LOCAL)
class Person {
Person emergencyContact;
String address;
@Nullable Person getEmergencyContact() {
return this.emergencyContact;
}
}
class Registry {
... // Pulse reports here
}
```

@ -1 +1,96 @@
Infer reports null dereference bugs in Java, C and Objective-C. The issue is
about a pointer that can be `null` and it is dereferenced. This leads to a crash
in all the above languages.
### Null dereference in Java
Many of Infer's reports of potential NPE's come from code of the form
```java
p = foo(); // foo() might return null
stuff();
p.goo(); // dereferencing p, potential NPE
```
If you see code of this form, then you have several options.
<b> If you are unsure whether or not foo() will return null </b>, you should
ideally i. Change the code to ensure that foo() can not return null ii. Add a
check for whether p is null, and do something other than dereferencing p when it
is null.
Sometimes, in case ii it is not obvious what you should do when p is null. One
possibility (a last option) is to throw an exception, failing early. This can be
done using checkNotNull as in the following code:
```java
// code idiom for failing early
import static com.google.common.base.Preconditions.checkNotNull;
//... intervening code
p = checkNotNull(foo()); // foo() might return null
stuff();
p.goo(); // dereferencing p, potential NPE
```
The call checkNotNull(foo()) will never return null; in case foo() returns null
it fails early by throwing an NPE.
<b> If you are absolutely sure that foo() will not be null </b>, then if you
land your diff this case will no longer be reported after your diff makes it to
master.
### Null dereference in C
Here is an example of an inter-procedural null dereference bug in C:
```c
struct Person {
int age;
int height;
int weight;
};
int get_age(struct Person *who) {
return who->age;
}
int null_pointer_interproc() {
struct Person *joe = 0;
return get_age(joe);
}
```
### Null dereference in Objective-C
In Objective-C, null dereferences are less common than in Java, but they still
happen and their cause can be hidden. In general, passing a message to nil does
not cause a crash and returns `nil`, but dereferencing a pointer directly does
cause a crash as well as calling a `nil` block.C
```objectivec
-(void) foo:(void (^)())callback {
callback();
}
-(void) bar {
[self foo:nil]; //crash
}
```
Moreover, there are functions from the libraries that do not allow `nil` to be
passed as argument. Here are some examples:
```objectivec
-(void) foo {
NSString *str = nil;
NSArray *animals = @[@"horse", str, @"dolphin"]; //crash
}
-(void) bar {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //can return NULL
...
CFRelease(colorSpace); //crashes if called with NULL
}
```

@ -1,97 +0,0 @@
Infer reports null dereference bugs in C, Objective-C and Java. The issue is
about a pointer that can be `null` and it is dereferenced. This leads to a crash
in all the above languages.
### Null dereference in C
Here is an example of an inter-procedural null dereference bug in C:
```c
struct Person {
int age;
int height;
int weight;
};
int get_age(struct Person *who) {
return who->age;
}
int null_pointer_interproc() {
struct Person *joe = 0;
return get_age(joe);
}
```
### Null dereference in Objective-C
In Objective-C, null dereferences are less common than in Java, but they still
happen and their cause can be hidden. In general, passing a message to nil does
not cause a crash and returns `nil`, but dereferencing a pointer directly does
cause a crash as well as calling a `nil` block.C
```objectivec
-(void) foo:(void (^)())callback {
callback();
}
-(void) bar {
[self foo:nil]; //crash
}
```
Moreover, there are functions from the libraries that do not allow `nil` to be
passed as argument. Here are some examples:
```objectivec
-(void) foo {
NSString *str = nil;
NSArray *animals = @[@"horse", str, @"dolphin"]; //crash
}
-(void) bar {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //can return NULL
...
CFRelease(colorSpace); //crashes if called with NULL
}
```
### Null dereference in Java
Many of Infer's reports of potential NPE's come from code of the form
```java
p = foo(); // foo() might return null
stuff();
p.goo(); // dereferencing p, potential NPE
```
If you see code of this form, then you have several options.
<b> If you are unsure whether or not foo() will return null </b>, you should
ideally i. Change the code to ensure that foo() can not return null ii. Add a
check for whether p is null, and do something other than dereferencing p when it
is null.
Sometimes, in case ii it is not obvious what you should do when p is null. One
possibility (a last option) is to throw an exception, failing early. This can be
done using checkNotNull as in the following code:
```java
// code idiom for failing early
import static com.google.common.base.Preconditions.checkNotNull;
//... intervening code
p = checkNotNull(foo()); // foo() might return null
stuff();
p.goo(); // dereferencing p, potential NPE
```
The call checkNotNull(foo()) will never return null; in case foo() returns null
it fails early by throwing an NPE.
<b> If you are absolutely sure that foo() will not be null </b>, then if you
land your diff this case will no longer be reported after your diff makes it to
master. In the future we might include analysis directives (hey, analyzer, p is
not null!) like in Hack that tell the analyzer the information that you know,
but that is for later.

@ -305,8 +305,9 @@ let config_unsafe checker =
; activates= [] } ; activates= [] }
| Pulse -> | Pulse ->
{ id= "pulse" { id= "pulse"
; kind= UserFacing {title= "Pulse"; markdown_body= ""} ; kind=
; support= (function Clang -> Support | Java -> ExperimentalSupport | CIL -> NoSupport) UserFacing {title= "Pulse"; markdown_body= [%blob "../../documentation/checkers/Pulse.md"]}
; support= (function Clang | Java -> Support | CIL -> NoSupport)
; short_documentation= "Memory and lifetime analysis." ; short_documentation= "Memory and lifetime analysis."
; cli_flags= Some {deprecated= ["-ownership"]; show_in_help= true} ; cli_flags= Some {deprecated= ["-ownership"]; show_in_help= true}
; enabled_by_default= false ; enabled_by_default= false

@ -791,12 +791,12 @@ let mutable_local_variable_in_component_file =
let null_dereference = let null_dereference =
register ~id:"NULL_DEREFERENCE" Error Biabduction register ~id:"NULL_DEREFERENCE" Error Biabduction
~user_documentation:[%blob "../../documentation/issues/NULL_DEREFERENCE.md"] ~user_documentation:[%blob "../../documentation/issues/NULLPTR_DEREFERENCE.md"]
let nullptr_dereference = let nullptr_dereference =
register ~id:"NULLPTR_DEREFERENCE" Error Pulse register ~id:"NULLPTR_DEREFERENCE" Error Pulse
~user_documentation:"See [NULL_DEREFERENCE](#null_dereference)." ~user_documentation:[%blob "../../documentation/issues/NULLPTR_DEREFERENCE.md"]
let optional_empty_access = let optional_empty_access =

@ -1138,6 +1138,11 @@ void invariant_hoist(int size) {
} }
``` ```
## IPC_ON_UI_THREAD
Reported as "Ipc On Ui Thread" by [starvation](/docs/next/checker-starvation).
A blocking `Binder` IPC call occurs on the UI thread.
## IVAR_NOT_NULL_CHECKED ## IVAR_NOT_NULL_CHECKED
Reported as "Ivar Not Null Checked" by [biabduction](/docs/next/checker-biabduction). Reported as "Ivar Not Null Checked" by [biabduction](/docs/next/checker-biabduction).
@ -1301,15 +1306,51 @@ Reported as "Mutable Local Variable In Component File" by [linters](/docs/next/c
Reported as "Nullptr Dereference" by [pulse](/docs/next/checker-pulse). Reported as "Nullptr Dereference" by [pulse](/docs/next/checker-pulse).
See [NULL_DEREFERENCE](#null_dereference).
## NULL_DEREFERENCE
Reported as "Null Dereference" by [biabduction](/docs/next/checker-biabduction). Infer reports null dereference bugs in Java, C and Objective-C. The issue is
Infer reports null dereference bugs in C, Objective-C and Java. The issue is
about a pointer that can be `null` and it is dereferenced. This leads to a crash about a pointer that can be `null` and it is dereferenced. This leads to a crash
in all the above languages. in all the above languages.
### Null dereference in Java
Many of Infer's reports of potential NPE's come from code of the form
```java
p = foo(); // foo() might return null
stuff();
p.goo(); // dereferencing p, potential NPE
```
If you see code of this form, then you have several options.
<b> If you are unsure whether or not foo() will return null </b>, you should
ideally i. Change the code to ensure that foo() can not return null ii. Add a
check for whether p is null, and do something other than dereferencing p when it
is null.
Sometimes, in case ii it is not obvious what you should do when p is null. One
possibility (a last option) is to throw an exception, failing early. This can be
done using checkNotNull as in the following code:
```java
// code idiom for failing early
import static com.google.common.base.Preconditions.checkNotNull;
//... intervening code
p = checkNotNull(foo()); // foo() might return null
stuff();
p.goo(); // dereferencing p, potential NPE
```
The call checkNotNull(foo()) will never return null; in case foo() returns null
it fails early by throwing an NPE.
<b> If you are absolutely sure that foo() will not be null </b>, then if you
land your diff this case will no longer be reported after your diff makes it to
master.
### Null dereference in C ### Null dereference in C
Here is an example of an inter-procedural null dereference bug in C: Here is an example of an inter-procedural null dereference bug in C:
@ -1362,6 +1403,15 @@ passed as argument. Here are some examples:
} }
``` ```
## NULL_DEREFERENCE
Reported as "Null Dereference" by [biabduction](/docs/next/checker-biabduction).
Infer reports null dereference bugs in Java, C and Objective-C. The issue is
about a pointer that can be `null` and it is dereferenced. This leads to a crash
in all the above languages.
### Null dereference in Java ### Null dereference in Java
Many of Infer's reports of potential NPE's come from code of the form Many of Infer's reports of potential NPE's come from code of the form
@ -1400,9 +1450,59 @@ it fails early by throwing an NPE.
<b> If you are absolutely sure that foo() will not be null </b>, then if you <b> If you are absolutely sure that foo() will not be null </b>, then if you
land your diff this case will no longer be reported after your diff makes it to land your diff this case will no longer be reported after your diff makes it to
master. In the future we might include analysis directives (hey, analyzer, p is master.
not null!) like in Hack that tell the analyzer the information that you know,
but that is for later. ### Null dereference in C
Here is an example of an inter-procedural null dereference bug in C:
```c
struct Person {
int age;
int height;
int weight;
};
int get_age(struct Person *who) {
return who->age;
}
int null_pointer_interproc() {
struct Person *joe = 0;
return get_age(joe);
}
```
### Null dereference in Objective-C
In Objective-C, null dereferences are less common than in Java, but they still
happen and their cause can be hidden. In general, passing a message to nil does
not cause a crash and returns `nil`, but dereferencing a pointer directly does
cause a crash as well as calling a `nil` block.C
```objectivec
-(void) foo:(void (^)())callback {
callback();
}
-(void) bar {
[self foo:nil]; //crash
}
```
Moreover, there are functions from the libraries that do not allow `nil` to be
passed as argument. Here are some examples:
```objectivec
-(void) foo {
NSString *str = nil;
NSArray *animals = @[@"horse", str, @"dolphin"]; //crash
}
-(void) bar {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //can return NULL
...
CFRelease(colorSpace); //crashes if called with NULL
}
```
## OPTIONAL_EMPTY_ACCESS ## OPTIONAL_EMPTY_ACCESS

@ -0,0 +1,20 @@
---
title: "Config Impact Analysis"
description: "[EXPERIMENTAL] Collects function that are called without config checks."
---
[EXPERIMENTAL] Collects function that are called without config checks.
Activate with `--config-impact-analysis`.
Supported languages:
- C/C++/ObjC: Experimental
- Java: Experimental
- C#/.Net: Experimental
This checker collects functions whose execution isn't gated by certain pre-defined gating functions. The set of gating functions is hardcoded and empty by default for now, so to use this checker, please modify the code directly in [FbGKInteraction.ml](https://github.com/facebook/infer/tree/master/infer/src/opensource).
## List of Issue Types
The following issue types are reported by this checker:
- [CONFIG_IMPACT](/docs/next/all-issue-types#config_impact)

@ -9,9 +9,65 @@ Activate with `--pulse`.
Supported languages: Supported languages:
- C/C++/ObjC: Yes - C/C++/ObjC: Yes
- Java: Experimental - Java: Yes
- C#/.Net: No - C#/.Net: No
### What is Infer:Pulse?
Pulse is an interprocedural memory safety analysis. Pulse can detect, for instance, [Null dereferences](/docs/next/all-issue-types#nullptr_dereference) in Java. Errors are only reported when all conditions on the erroneous path are true regardless of input. Pulse should gradually replace the original [biabduction](/docs/next/checker-biabduction) analysis of Infer. An example of a Null dereference found by Pulse is given below.
```java
class Person {
Person emergencyContact;
String address;
Person getEmergencyContact() {
return this.emergencyContact;
}
}
class Registry {
void create() {
Person p = new Person();
Person c = p.getEmergencyContact();
// Null dereference here
System.out.println(c.address);
}
void printContact(Person p) {
// No null dereference, as we don't know anything about `p`
System.out.println(p.getEmergencyContact().address);
}
}
```
How to run pulse for Java:
```bash
infer run --pulse -- javac Test.java
```
Pulse reports a Null dereference on this file on `create()`, as it tries to access the field `address` of object `c`, and `c` has value `null`. In contrast, Pulse gives no report for `printContact(Person p)`, as we cannot be sure that `p.getEmergencyContact()` will return `null`. Pulse then labels this error as latent and only reports if there is a call to `printContact(Person p)` satisfying the condition for Null dereference.
### Pulse x Nullsafe
[Nullsafe](/docs/next/checker-eradicate) is a type checker for `@Nullable` annotations for Java. Classes following the Nullsafe discipline are annotated with `@Nullsafe`.
Consider the classes `Person` and `Registry` from the previous example. Assuming that class `Person` is annotated with `@Nullsafe`. In this case, we also annotate `getEmergencyContact()` with `@Nullable`, to make explicit that this method can return the `null` value. There is still the risk that classes depending on `Person` have Null dereferences. In this case, Pulse would report a Null dereference on `Registry`. It could also be the case that class `Registry` is annotated with `@Nullsafe`. By default Pulse reports on `@Nullsafe` files too, see the `--pulse-nullsafe-report-npe` option (Facebook-specific: Pulse does not report on `@Nullsafe` files).
```java
@Nullsafe(Nullsafe.Mode.LOCAL)
class Person {
Person emergencyContact;
String address;
@Nullable Person getEmergencyContact() {
return this.emergencyContact;
}
}
class Registry {
... // Pulse reports here
}
```
## List of Issue Types ## List of Issue Types

@ -24,6 +24,7 @@ Detect several kinds of "starvation" problems:
The following issue types are reported by this checker: The following issue types are reported by this checker:
- [ARBITRARY_CODE_EXECUTION_UNDER_LOCK](/docs/next/all-issue-types#arbitrary_code_execution_under_lock) - [ARBITRARY_CODE_EXECUTION_UNDER_LOCK](/docs/next/all-issue-types#arbitrary_code_execution_under_lock)
- [DEADLOCK](/docs/next/all-issue-types#deadlock) - [DEADLOCK](/docs/next/all-issue-types#deadlock)
- [IPC_ON_UI_THREAD](/docs/next/all-issue-types#ipc_on_ui_thread)
- [LOCKLESS_VIOLATION](/docs/next/all-issue-types#lockless_violation) - [LOCKLESS_VIOLATION](/docs/next/all-issue-types#lockless_violation)
- [STARVATION](/docs/next/all-issue-types#starvation) - [STARVATION](/docs/next/all-issue-types#starvation)
- [STRICT_MODE_VIOLATION](/docs/next/all-issue-types#strict_mode_violation) - [STRICT_MODE_VIOLATION](/docs/next/all-issue-types#strict_mode_violation)

@ -94,6 +94,21 @@ used to explain why the issue was filtered.</p>
<p style="margin-left:17%;">[ConfigImpact] Specify the file <p style="margin-left:17%;">[ConfigImpact] Specify the file
containing the config data</p> containing the config data</p>
<p style="margin-left:11%;"><b>--config-impact-issues-tests</b>
<i>file</i></p>
<p style="margin-left:17%;">Write a list of config impact
issues in a format suitable for config impact tests to
<i>file</i></p>
<p style="margin-left:11%;"><b>--config-impact-max-callees-to-print</b>
<i>int</i></p>
<p style="margin-left:17%;">Specify the maximum number of
unchecked callees to print in the config impact checker</p>
<p style="margin-left:11%;"><b>--cost-issues-tests</b> <p style="margin-left:11%;"><b>--cost-issues-tests</b>
<i>file</i></p> <i>file</i></p>
@ -301,6 +316,7 @@ INTEGER_OVERFLOW_L5 (disabled by default), <br>
INTEGER_OVERFLOW_U5 (disabled by default), <br> INTEGER_OVERFLOW_U5 (disabled by default), <br>
INTERFACE_NOT_THREAD_SAFE (enabled by default), <br> INTERFACE_NOT_THREAD_SAFE (enabled by default), <br>
INVARIANT_CALL (disabled by default), <br> INVARIANT_CALL (disabled by default), <br>
IPC_ON_UI_THREAD (enabled by default), <br>
IVAR_NOT_NULL_CHECKED (enabled by default), <br> IVAR_NOT_NULL_CHECKED (enabled by default), <br>
Internal_error (enabled by default), <br> Internal_error (enabled by default), <br>
JAVASCRIPT_INJECTION (enabled by default), <br> JAVASCRIPT_INJECTION (enabled by default), <br>
@ -386,6 +402,13 @@ experimental and blacklisted issue types (Conversely:
<b>--filtering</b> | <b>-f</b>)</p> <b>--filtering</b> | <b>-f</b>)</p>
<p style="margin-left:11%;"><b>--from-json-config-impact-report</b>
<i>config-impact-report.json</i></p>
<p style="margin-left:17%;">Load costs analysis results
from a config-impact-report file.</p>
<p style="margin-left:11%;"><b>--from-json-costs-report</b> <p style="margin-left:11%;"><b>--from-json-costs-report</b>
<i>costs-report.json</i></p> <i>costs-report.json</i></p>

@ -69,7 +69,28 @@ follow the same format as normal infer reports.</p>
<p style="margin-left:11%; margin-top: 1em"><b>--cost-tests-only-autoreleasepool</b></p> <p style="margin-left:11%; margin-top: 1em"><b>--config-impact-current</b>
<i>path</i></p>
<p style="margin-left:17%;">Config impact report of the
latest revision</p>
<p style="margin-left:11%;"><b>--config-impact-max-callees-to-print</b>
<i>int</i></p>
<p style="margin-left:17%;">Specify the maximum number of
unchecked callees to print in the config impact checker</p>
<p style="margin-left:11%;"><b>--config-impact-previous</b>
<i>path</i></p>
<p style="margin-left:17%;">Config impact report of the
base revision to use for comparison</p>
<p style="margin-left:11%;"><b>--cost-tests-only-autoreleasepool</b></p>
<p style="margin-left:17%;">Activates: [EXPERIMENTAL] <p style="margin-left:17%;">Activates: [EXPERIMENTAL]
Report only autoreleasepool size results in cost tests Report only autoreleasepool size results in cost tests

@ -472,6 +472,13 @@ config-impact-analysis and disable all other checkers
<p style="margin-left:11%;">See also <p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br> <b>infer-analyze</b>(1). <b><br>
--config-impact-current</b> <i>path</i></p>
<p style="margin-left:17%;">Config impact report of the
latest revision</p>
<p style="margin-left:11%;">See also
<b>infer-reportdiff</b>(1). <b><br>
--config-impact-data-file</b> <i>file</i></p> --config-impact-data-file</b> <i>file</i></p>
<p style="margin-left:17%;">[ConfigImpact] Specify the file <p style="margin-left:17%;">[ConfigImpact] Specify the file
@ -479,6 +486,28 @@ containing the config data</p>
<p style="margin-left:11%;">See also <p style="margin-left:11%;">See also
<b>infer-report</b>(1). <b><br> <b>infer-report</b>(1). <b><br>
--config-impact-issues-tests</b> <i>file</i></p>
<p style="margin-left:17%;">Write a list of config impact
issues in a format suitable for config impact tests to
<i>file</i></p>
<p style="margin-left:11%;">See also
<b>infer-report</b>(1). <b><br>
--config-impact-max-callees-to-print</b> <i>int</i></p>
<p style="margin-left:17%;">Specify the maximum number of
unchecked callees to print in the config impact checker</p>
<p style="margin-left:11%;">See also <b>infer-report</b>(1)
and <b>infer-reportdiff</b>(1). <b><br>
--config-impact-previous</b> <i>path</i></p>
<p style="margin-left:17%;">Config impact report of the
base revision to use for comparison</p>
<p style="margin-left:11%;">See also
<b>infer-reportdiff</b>(1). <b><br>
--continue</b></p> --continue</b></p>
<p style="margin-left:17%;">Activates: Continue the capture <p style="margin-left:17%;">Activates: Continue the capture
@ -828,6 +857,7 @@ INTEGER_OVERFLOW_L5 (disabled by default), <br>
INTEGER_OVERFLOW_U5 (disabled by default), <br> INTEGER_OVERFLOW_U5 (disabled by default), <br>
INTERFACE_NOT_THREAD_SAFE (enabled by default), <br> INTERFACE_NOT_THREAD_SAFE (enabled by default), <br>
INVARIANT_CALL (disabled by default), <br> INVARIANT_CALL (disabled by default), <br>
IPC_ON_UI_THREAD (enabled by default), <br>
IVAR_NOT_NULL_CHECKED (enabled by default), <br> IVAR_NOT_NULL_CHECKED (enabled by default), <br>
Internal_error (enabled by default), <br> Internal_error (enabled by default), <br>
JAVASCRIPT_INJECTION (enabled by default), <br> JAVASCRIPT_INJECTION (enabled by default), <br>
@ -1006,6 +1036,14 @@ fragment-retains-view and disable all other checkers
<p style="margin-left:11%;">See also <p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br> <b>infer-analyze</b>(1). <b><br>
--from-json-config-impact-report</b>
<i>config-impact-report.json</i></p>
<p style="margin-left:17%;">Load costs analysis results
from a config-impact-report file.</p>
<p style="margin-left:11%;">See also
<b>infer-report</b>(1). <b><br>
--from-json-costs-report</b> <i>costs-report.json</i></p> --from-json-costs-report</b> <i>costs-report.json</i></p>
<p style="margin-left:17%;">Load costs analysis results <p style="margin-left:17%;">Load costs analysis results

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Config_impact_data_t (infer.ATDGenerated.Config_impact_data_t)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">ATDGenerated</a> &#x00BB; Config_impact_data_t</nav><h1>Module <code>ATDGenerated.Config_impact_data_t</code></h1></header><dl><dt class="spec type" id="type-config_item"><a href="#type-config_item" class="anchor"></a><code><span class="keyword">type</span> config_item</code><code> = </code><code>{</code><table class="record"><tr id="type-config_item.method_name" class="anchored"><td class="def field"><a href="#type-config_item.method_name" class="anchor"></a><code>method_name : string;</code></td></tr><tr id="type-config_item.class_name" class="anchored"><td class="def field"><a href="#type-config_item.class_name" class="anchor"></a><code>class_name : string;</code></td></tr></table><code>}</code></dt><dt class="spec type" id="type-config_data"><a href="#type-config_data" class="anchor"></a><code><span class="keyword">type</span> config_data</code><code> = <span><a href="index.html#type-config_item">config_item</a> list</span></code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ATDGenerated__Config_impact_data_t (infer.ATDGenerated__Config_impact_data_t)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; ATDGenerated__Config_impact_data_t</nav><h1>Module <code>ATDGenerated__Config_impact_data_t</code></h1></header><dl><dt class="spec type" id="type-config_item"><a href="#type-config_item" class="anchor"></a><code><span class="keyword">type</span> config_item</code><code> = </code><code>{</code><table class="record"><tr id="type-config_item.method_name" class="anchored"><td class="def field"><a href="#type-config_item.method_name" class="anchor"></a><code>method_name : string;</code></td></tr><tr id="type-config_item.class_name" class="anchored"><td class="def field"><a href="#type-config_item.class_name" class="anchor"></a><code>class_name : string;</code></td></tr></table><code>}</code></dt><dt class="spec type" id="type-config_data"><a href="#type-config_data" class="anchor"></a><code><span class="keyword">type</span> config_data</code><code> = <span><a href="index.html#type-config_item">config_item</a> list</span></code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Summary (infer.Checkers.ConfigImpactAnalysis.Summary)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Checkers</a> &#x00BB; <a href="../index.html">ConfigImpactAnalysis</a> &#x00BB; Summary</nav><h1>Module <code>ConfigImpactAnalysis.Summary</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></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : Stdlib.Format.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-get_unchecked_callees"><a href="#val-get_unchecked_callees" class="anchor"></a><code><span class="keyword">val</span> get_unchecked_callees : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../index.html#module-UncheckedCallees">UncheckedCallees</a>.t</code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>UncheckedCallee (infer.Checkers.ConfigImpactAnalysis.UncheckedCallee)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Checkers</a> &#x00BB; <a href="../index.html">ConfigImpactAnalysis</a> &#x00BB; UncheckedCallee</nav><h1>Module <code>ConfigImpactAnalysis.UncheckedCallee</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></dt></dl><dl><dt class="spec value" id="val-make_err_trace"><a href="#val-make_err_trace" class="anchor"></a><code><span class="keyword">val</span> make_err_trace : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../../../Absint/Errlog/index.html#type-loc_trace">Absint.Errlog.loc_trace</a></code></dt><dt class="spec value" id="val-pp_without_location_list"><a href="#val-pp_without_location_list" class="anchor"></a><code><span class="keyword">val</span> pp_without_location_list : Stdlib.Format.formatter <span>&#45;&gt;</span> <span><a href="index.html#type-t">t</a> list</span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ConfigImpactAnalysis (infer.Checkers.ConfigImpactAnalysis)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Checkers</a> &#x00BB; ConfigImpactAnalysis</nav><h1>Module <code>Checkers.ConfigImpactAnalysis</code></h1></header><div class="spec module" id="module-UncheckedCallee"><a href="#module-UncheckedCallee" class="anchor"></a><code><span class="keyword">module</span> <a href="UncheckedCallee/index.html">UncheckedCallee</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-UncheckedCallees"><a href="#module-UncheckedCallees" class="anchor"></a><code><span class="keyword">module</span> <a href="UncheckedCallees/index.html">UncheckedCallees</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Summary"><a href="#module-Summary" class="anchor"></a><code><span class="keyword">module</span> <a href="Summary/index.html">Summary</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec value" id="val-checker"><a href="#val-checker" class="anchor"></a><code><span class="keyword">val</span> checker : <span><a href="Summary/index.html#type-t">Summary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><a href="Summary/index.html#type-t">Summary.t</a> option</span></code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ExternalConfigImpactData (infer.Checkers.ExternalConfigImpactData)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Checkers</a> &#x00BB; ExternalConfigImpactData</nav><h1>Module <code>Checkers.ExternalConfigImpactData</code></h1></header><dl><dt class="spec value" id="val-is_in_config_data_file"><a href="#val-is_in_config_data_file" class="anchor"></a><code><span class="keyword">val</span> is_in_config_data_file : <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Summary (infer.Checkers__ConfigImpactAnalysis.Summary)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Checkers__ConfigImpactAnalysis</a> &#x00BB; Summary</nav><h1>Module <code>Checkers__ConfigImpactAnalysis.Summary</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></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : Stdlib.Format.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-get_unchecked_callees"><a href="#val-get_unchecked_callees" class="anchor"></a><code><span class="keyword">val</span> get_unchecked_callees : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../index.html#module-UncheckedCallees">UncheckedCallees</a>.t</code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>UncheckedCallee (infer.Checkers__ConfigImpactAnalysis.UncheckedCallee)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Checkers__ConfigImpactAnalysis</a> &#x00BB; UncheckedCallee</nav><h1>Module <code>Checkers__ConfigImpactAnalysis.UncheckedCallee</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></dt></dl><dl><dt class="spec value" id="val-make_err_trace"><a href="#val-make_err_trace" class="anchor"></a><code><span class="keyword">val</span> make_err_trace : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../../Absint/Errlog/index.html#type-loc_trace">Absint.Errlog.loc_trace</a></code></dt><dt class="spec value" id="val-pp_without_location_list"><a href="#val-pp_without_location_list" class="anchor"></a><code><span class="keyword">val</span> pp_without_location_list : Stdlib.Format.formatter <span>&#45;&gt;</span> <span><a href="index.html#type-t">t</a> list</span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Checkers__ConfigImpactAnalysis (infer.Checkers__ConfigImpactAnalysis)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Checkers__ConfigImpactAnalysis</nav><h1>Module <code>Checkers__ConfigImpactAnalysis</code></h1></header><div class="spec module" id="module-UncheckedCallee"><a href="#module-UncheckedCallee" class="anchor"></a><code><span class="keyword">module</span> <a href="UncheckedCallee/index.html">UncheckedCallee</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-UncheckedCallees"><a href="#module-UncheckedCallees" class="anchor"></a><code><span class="keyword">module</span> <a href="UncheckedCallees/index.html">UncheckedCallees</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Summary"><a href="#module-Summary" class="anchor"></a><code><span class="keyword">module</span> <a href="Summary/index.html">Summary</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec value" id="val-checker"><a href="#val-checker" class="anchor"></a><code><span class="keyword">val</span> checker : <span><a href="Summary/index.html#type-t">Summary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><a href="Summary/index.html#type-t">Summary.t</a> option</span></code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Checkers__ExternalConfigImpactData (infer.Checkers__ExternalConfigImpactData)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Checkers__ExternalConfigImpactData</nav><h1>Module <code>Checkers__ExternalConfigImpactData</code></h1></header><dl><dt class="spec value" id="val-is_in_config_data_file"><a href="#val-is_in_config_data_file" class="anchor"></a><code><span class="keyword">val</span> is_in_config_data_file : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ConfigImpactIssuesTest (infer.Integration.ConfigImpactIssuesTest)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Integration</a> &#x00BB; ConfigImpactIssuesTest</nav><h1>Module <code>Integration.ConfigImpactIssuesTest</code></h1></header><dl><dt class="spec value" id="val-write_from_json"><a href="#val-write_from_json" class="anchor"></a><code><span class="keyword">val</span> write_from_json : <span>json_path:string</span> <span>&#45;&gt;</span> <span>out_path:string</span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Differential (infer.Integration.Differential)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Integration</a> &#x00BB; Differential</nav><h1>Module <code>Integration.Differential</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><code>{</code><table class="record"><tr id="type-t.introduced" class="anchored"><td class="def field"><a href="#type-t.introduced" class="anchor"></a><code>introduced : <a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.fixed" class="anchored"><td class="def field"><a href="#type-t.fixed" class="anchor"></a><code>fixed : <a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.preexisting" class="anchored"><td class="def field"><a href="#type-t.preexisting" class="anchor"></a><code>preexisting : <a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.costs_summary" class="anchored"><td class="def field"><a href="#type-t.costs_summary" class="anchor"></a><code>costs_summary : Yojson.Basic.t;</code></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-of_reports"><a href="#val-of_reports" class="anchor"></a><code><span class="keyword">val</span> of_reports : <span>current_report:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>previous_report:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>current_costs:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <span>previous_costs:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-to_files"><a href="#val-to_files" class="anchor"></a><code><span class="keyword">val</span> to_files : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Differential (infer.Integration.Differential)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Integration</a> &#x00BB; Differential</nav><h1>Module <code>Integration.Differential</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><code>{</code><table class="record"><tr id="type-t.introduced" class="anchored"><td class="def field"><a href="#type-t.introduced" class="anchor"></a><code>introduced : <a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.fixed" class="anchored"><td class="def field"><a href="#type-t.fixed" class="anchor"></a><code>fixed : <a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.preexisting" class="anchored"><td class="def field"><a href="#type-t.preexisting" class="anchor"></a><code>preexisting : <a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.costs_summary" class="anchored"><td class="def field"><a href="#type-t.costs_summary" class="anchor"></a><code>costs_summary : Yojson.Basic.t;</code></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-issues_of_reports"><a href="#val-issues_of_reports" class="anchor"></a><code><span class="keyword">val</span> issues_of_reports : <span>current_report:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>previous_report:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>current_costs:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <span>previous_costs:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <span>current_config_impact:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-config_impact_report">ATDGenerated.Jsonbug_t.config_impact_report</a></span> <span>&#45;&gt;</span> <span>previous_config_impact:<a href="../../ATDGenerated/Jsonbug_t/index.html#type-config_impact_report">ATDGenerated.Jsonbug_t.config_impact_report</a></span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-to_files"><a href="#val-to_files" class="anchor"></a><code><span class="keyword">val</span> to_files : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ReportDiff (infer.Integration.ReportDiff)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Integration</a> &#x00BB; ReportDiff</nav><h1>Module <code>Integration.ReportDiff</code></h1></header><dl><dt class="spec value" id="val-reportdiff"><a href="#val-reportdiff" class="anchor"></a><code><span class="keyword">val</span> reportdiff : <span>current_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>current_costs:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_costs:<span>string option</span></span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>ReportDiff (infer.Integration.ReportDiff)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Integration</a> &#x00BB; ReportDiff</nav><h1>Module <code>Integration.ReportDiff</code></h1></header><dl><dt class="spec value" id="val-reportdiff"><a href="#val-reportdiff" class="anchor"></a><code><span class="keyword">val</span> reportdiff : <span>current_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>current_costs:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_costs:<span>string option</span></span> <span>&#45;&gt;</span> <span>current_config_impact:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_config_impact:<span>string option</span></span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__ConfigImpactIssuesTest (infer.Integration__ConfigImpactIssuesTest)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Integration__ConfigImpactIssuesTest</nav><h1>Module <code>Integration__ConfigImpactIssuesTest</code></h1></header><dl><dt class="spec value" id="val-write_from_json"><a href="#val-write_from_json" class="anchor"></a><code><span class="keyword">val</span> write_from_json : <span>json_path:string</span> <span>&#45;&gt;</span> <span>out_path:string</span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__Differential (infer.Integration__Differential)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Integration__Differential</nav><h1>Module <code>Integration__Differential</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><code>{</code><table class="record"><tr id="type-t.introduced" class="anchored"><td class="def field"><a href="#type-t.introduced" class="anchor"></a><code>introduced : <a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.fixed" class="anchored"><td class="def field"><a href="#type-t.fixed" class="anchor"></a><code>fixed : <a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.preexisting" class="anchored"><td class="def field"><a href="#type-t.preexisting" class="anchor"></a><code>preexisting : <a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.costs_summary" class="anchored"><td class="def field"><a href="#type-t.costs_summary" class="anchor"></a><code>costs_summary : Yojson.Basic.t;</code></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-of_reports"><a href="#val-of_reports" class="anchor"></a><code><span class="keyword">val</span> of_reports : <span>current_report:<a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>previous_report:<a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>current_costs:<a href="../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <span>previous_costs:<a href="../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-to_files"><a href="#val-to_files" class="anchor"></a><code><span class="keyword">val</span> to_files : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__Differential (infer.Integration__Differential)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Integration__Differential</nav><h1>Module <code>Integration__Differential</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><code>{</code><table class="record"><tr id="type-t.introduced" class="anchored"><td class="def field"><a href="#type-t.introduced" class="anchor"></a><code>introduced : <a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.fixed" class="anchored"><td class="def field"><a href="#type-t.fixed" class="anchor"></a><code>fixed : <a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.preexisting" class="anchored"><td class="def field"><a href="#type-t.preexisting" class="anchor"></a><code>preexisting : <a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a>;</code></td></tr><tr id="type-t.costs_summary" class="anchored"><td class="def field"><a href="#type-t.costs_summary" class="anchor"></a><code>costs_summary : Yojson.Basic.t;</code></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-issues_of_reports"><a href="#val-issues_of_reports" class="anchor"></a><code><span class="keyword">val</span> issues_of_reports : <span>current_report:<a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>previous_report:<a href="../ATDGenerated/Jsonbug_t/index.html#type-report">ATDGenerated.Jsonbug_t.report</a></span> <span>&#45;&gt;</span> <span>current_costs:<a href="../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <span>previous_costs:<a href="../ATDGenerated/Jsonbug_t/index.html#type-costs_report">ATDGenerated.Jsonbug_t.costs_report</a></span> <span>&#45;&gt;</span> <span>current_config_impact:<a href="../ATDGenerated/Jsonbug_t/index.html#type-config_impact_report">ATDGenerated.Jsonbug_t.config_impact_report</a></span> <span>&#45;&gt;</span> <span>previous_config_impact:<a href="../ATDGenerated/Jsonbug_t/index.html#type-config_impact_report">ATDGenerated.Jsonbug_t.config_impact_report</a></span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-to_files"><a href="#val-to_files" class="anchor"></a><code><span class="keyword">val</span> to_files : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__ReportDiff (infer.Integration__ReportDiff)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Integration__ReportDiff</nav><h1>Module <code>Integration__ReportDiff</code></h1></header><dl><dt class="spec value" id="val-reportdiff"><a href="#val-reportdiff" class="anchor"></a><code><span class="keyword">val</span> reportdiff : <span>current_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>current_costs:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_costs:<span>string option</span></span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__ReportDiff (infer.Integration__ReportDiff)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Integration__ReportDiff</nav><h1>Module <code>Integration__ReportDiff</code></h1></header><dl><dt class="spec value" id="val-reportdiff"><a href="#val-reportdiff" class="anchor"></a><code><span class="keyword">val</span> reportdiff : <span>current_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_report:<span>string option</span></span> <span>&#45;&gt;</span> <span>current_costs:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_costs:<span>string option</span></span> <span>&#45;&gt;</span> <span>current_config_impact:<span>string option</span></span> <span>&#45;&gt;</span> <span>previous_config_impact:<span>string option</span></span> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseAccessResult (infer.Pulselib.PulseAccessResult)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseAccessResult</nav><h1>Module <code>Pulselib.PulseAccessResult</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../index.html#module-PulseAbductiveDomain">PulseAbductiveDomain</a></code></div><dl><dt class="spec type" id="type-error"><a href="#type-error" class="anchor"></a><code><span class="keyword">type</span> <span>'astate error</span></code><code> = </code><table class="variant"><tr id="type-error.ReportableError" class="anchored"><td class="def constructor"><a href="#type-error.ReportableError" class="anchor"></a><code>| </code><code><span class="constructor">ReportableError</span> <span class="keyword">of</span> </code><code>{</code><table class="record"><tr id="type-error.astate" class="anchored"><td class="def field"><a href="#type-error.astate" class="anchor"></a><code>astate : <span class="type-var">'astate</span>;</code></td></tr><tr id="type-error.diagnostic" class="anchored"><td class="def field"><a href="#type-error.diagnostic" class="anchor"></a><code>diagnostic : <a href="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a>;</code></td></tr></table><code>}</code></td></tr><tr id="type-error.ISLError" class="anchored"><td class="def constructor"><a href="#type-error.ISLError" class="anchor"></a><code>| </code><code><span class="constructor">ISLError</span> <span class="keyword">of</span> <span class="type-var">'astate</span></code></td></tr></table></dt><dt class="spec type" id="type-base_t"><a href="#type-base_t" class="anchor"></a><code><span class="keyword">type</span> <span>('a, 'astate) base_t</span></code><code> = <span><span>(<span class="type-var">'a</span>, <span><span class="type-var">'astate</span> <a href="index.html#type-error">error</a></span>)</span> <a href="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.result</span></code></dt><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> <span>'a t</span></code><code> = <span><span>(<span class="type-var">'a</span>, <a href="../PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a>)</span> <a href="index.html#type-base_t">base_t</a></span></code></dt></dl><dl><dt class="spec value" id="val-to_summary"><a href="#val-to_summary" class="anchor"></a><code><span class="keyword">val</span> to_summary : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>&#45;&gt;</span> <span><a href="../PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="index.html#type-error">error</a></span> <span>&#45;&gt;</span> <span><span><a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <a href="index.html#type-error">error</a></span> <a href="../PulseSatUnsat/index.html#type-t">PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>DynamicTypes (infer.Pulselib.PulseFormula.DynamicTypes)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; <a href="../index.html">PulseFormula</a> &#x00BB; DynamicTypes</nav><h1>Module <code>PulseFormula.DynamicTypes</code></h1><p>Module for reasoning about dynamic types. *</p></header><dl><dt class="spec value" id="val-simplify"><a href="#val-simplify" class="anchor"></a><code><span class="keyword">val</span> simplify : <a href="../../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span>get_dynamic_type:<span>(<a href="../../PulseAbstractValue/index.html#type-t">Var.t</a> <span>&#45;&gt;</span> <span><a href="../../../IR/Typ/index.html#type-t">IR.Typ.t</a> option</span>)</span></span> <span>&#45;&gt;</span> <a href="../index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../index.html#type-t">t</a></code></dt><dd><p>Simplifies <code>IsInstanceOf(var, typ)</code> predicate when dynamic type information is available in state. *</p></dd></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseInterproc (infer.Pulselib.PulseInterproc)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseInterproc</nav><h1>Module <code>Pulselib.PulseInterproc</code></h1></header><dl><dt class="spec value" id="val-apply_prepost"><a href="#val-apply_prepost" class="anchor"></a><code><span class="keyword">val</span> apply_prepost : <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>callee_prepost:<a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a></span> <span>&#45;&gt;</span> <span>captured_vars_with_actuals:<span><span>(<a href="../../IR/Var/index.html#type-t">IR.Var.t</a> * <span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span>)</span> list</span></span> <span>&#45;&gt;</span> <span>formals:<span><a href="../../IR/Var/index.html#type-t">IR.Var.t</a> list</span></span> <span>&#45;&gt;</span> <span>actuals:<span><span>(<span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> list</span></span> <span>&#45;&gt;</span> <a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> * <span><span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span> option</span>)</span> <a href="../PulseReport/index.html#type-access_result">PulseReport.access_result</a></span> <a href="../PulseSatUnsat/index.html#type-t">PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseInterproc (infer.Pulselib.PulseInterproc)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseInterproc</nav><h1>Module <code>Pulselib.PulseInterproc</code></h1></header><dl><dt class="spec value" id="val-apply_prepost"><a href="#val-apply_prepost" class="anchor"></a><code><span class="keyword">val</span> apply_prepost : <span>is_isl_error_prepost:bool</span> <span>&#45;&gt;</span> <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>callee_prepost:<a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a></span> <span>&#45;&gt;</span> <span>captured_vars_with_actuals:<span><span>(<a href="../../IR/Var/index.html#type-t">IR.Var.t</a> * <span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span>)</span> list</span></span> <span>&#45;&gt;</span> <span>formals:<span><a href="../../IR/Var/index.html#type-t">IR.Var.t</a> list</span></span> <span>&#45;&gt;</span> <span>actuals:<span><span>(<span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> list</span></span> <span>&#45;&gt;</span> <a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> * <span><span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span> option</span>)</span> <a href="../PulseAccessResult/index.html#type-t">PulseDomainInterface.AccessResult.t</a></span> <a href="../PulseSatUnsat/index.html#type-t">PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseLatentIssue (infer.Pulselib.PulseLatentIssue)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseLatentIssue</nav><h1>Module <code>Pulselib.PulseLatentIssue</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../index.html#module-PulseAbductiveDomain">PulseAbductiveDomain</a></code></div><aside><p>A subset of <code>PulseDiagnostic</code> that can be &quot;latent&quot;, i.e. there is a potential issue in the code but we want to delay reporting until we see the conditions for the bug manifest themselves in some calling context.</p></aside><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.AccessToInvalidAddress" class="anchored"><td class="def constructor"><a href="#type-t.AccessToInvalidAddress" class="anchor"></a><code>| </code><code><span class="constructor">AccessToInvalidAddress</span> <span class="keyword">of</span> <a href="../PulseDiagnostic/index.html#type-access_to_invalid_address">PulseBasicInterface.Diagnostic.access_to_invalid_address</a></code></td></tr><tr id="type-t.ReadUninitializedValue" class="anchored"><td class="def constructor"><a href="#type-t.ReadUninitializedValue" class="anchor"></a><code>| </code><code><span class="constructor">ReadUninitializedValue</span> <span class="keyword">of</span> <a href="../PulseDiagnostic/index.html#type-read_uninitialized_value">PulseBasicInterface.Diagnostic.read_uninitialized_value</a></code></td></tr></table></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt><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-yojson_of_t"><a href="#val-yojson_of_t" class="anchor"></a><code><span class="keyword">val</span> yojson_of_t : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-to_diagnostic"><a href="#val-to_diagnostic" class="anchor"></a><code><span class="keyword">val</span> to_diagnostic : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a></code></dt><dt class="spec value" id="val-should_report"><a href="#val-should_report" class="anchor"></a><code><span class="keyword">val</span> should_report : <a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-should_report_diagnostic"><a href="#val-should_report_diagnostic" class="anchor"></a><code><span class="keyword">val</span> should_report_diagnostic : <a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <span>&#45;&gt;</span> <a href="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a> <span>&#45;&gt;</span> <span>[ `ReportNow <span><span>| `DelayReport</span> of <a href="index.html#type-t">t</a></span> ]</span></code></dt><dt class="spec value" id="val-add_call"><a href="#val-add_call" class="anchor"></a><code><span class="keyword">val</span> add_call : <span>(<a href="../PulseCallEvent/index.html#type-t">PulseBasicInterface.CallEvent.t</a> * <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a>)</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseLatentIssue (infer.Pulselib.PulseLatentIssue)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseLatentIssue</nav><h1>Module <code>Pulselib.PulseLatentIssue</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../index.html#module-PulseAbductiveDomain">PulseAbductiveDomain</a></code></div><aside><p>A subset of <code>PulseDiagnostic</code> that can be &quot;latent&quot;, i.e. there is a potential issue in the code but we want to delay reporting until we see the conditions for the bug manifest themselves in some calling context.</p></aside><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.AccessToInvalidAddress" class="anchored"><td class="def constructor"><a href="#type-t.AccessToInvalidAddress" class="anchor"></a><code>| </code><code><span class="constructor">AccessToInvalidAddress</span> <span class="keyword">of</span> <a href="../PulseDiagnostic/index.html#type-access_to_invalid_address">PulseBasicInterface.Diagnostic.access_to_invalid_address</a></code></td></tr><tr id="type-t.ReadUninitializedValue" class="anchored"><td class="def constructor"><a href="#type-t.ReadUninitializedValue" class="anchor"></a><code>| </code><code><span class="constructor">ReadUninitializedValue</span> <span class="keyword">of</span> <a href="../PulseDiagnostic/index.html#type-read_uninitialized_value">PulseBasicInterface.Diagnostic.read_uninitialized_value</a></code></td></tr></table></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt><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-yojson_of_t"><a href="#val-yojson_of_t" class="anchor"></a><code><span class="keyword">val</span> yojson_of_t : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-to_diagnostic"><a href="#val-to_diagnostic" class="anchor"></a><code><span class="keyword">val</span> to_diagnostic : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a></code></dt><dt class="spec value" id="val-should_report"><a href="#val-should_report" class="anchor"></a><code><span class="keyword">val</span> should_report : <span><a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <a href="../PulseAccessResult/index.html#type-error">PulseAccessResult.error</a></span> <span>&#45;&gt;</span> <span>[&gt; <span>`DelayReport of <a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> * <a href="index.html#type-t">t</a></span> <span><span>| `ReportNow</span> of <a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> * <a href="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a></span> <span><span>| `ISLDelay</span> of <a href="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a></span> ]</span></code></dt><dt class="spec value" id="val-add_call"><a href="#val-add_call" class="anchor"></a><code><span class="keyword">val</span> add_call : <span>(<a href="../PulseCallEvent/index.html#type-t">PulseBasicInterface.CallEvent.t</a> * <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a>)</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseModels (infer.Pulselib.PulseModels)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseModels</nav><h1>Module <code>Pulselib.PulseModels</code></h1></header><dl><dt class="spec type" id="type-model"><a href="#type-model" class="anchor"></a><code><span class="keyword">type</span> model</code><code> = <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span>callee_procname:<a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a></span> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>ret:<span>(<a href="../../IR/Ident/index.html#type-t">IR.Ident.t</a> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span></span> <span>&#45;&gt;</span> <a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> <a href="../PulseOperations/index.html#type-access_result">PulseOperations.access_result</a></span> list</span></code></dt></dl><dl><dt class="spec value" id="val-dispatch"><a href="#val-dispatch" class="anchor"></a><code><span class="keyword">val</span> dispatch : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span> <a href="../../Absint/ProcnameDispatcher/Call/FuncArg/index.html#type-t">Absint.ProcnameDispatcher.Call.FuncArg.t</a></span> list</span> <span>&#45;&gt;</span> <span><a href="index.html#type-model">model</a> option</span></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseModels (infer.Pulselib.PulseModels)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseModels</nav><h1>Module <code>Pulselib.PulseModels</code></h1></header><dl><dt class="spec type" id="type-model"><a href="#type-model" class="anchor"></a><code><span class="keyword">type</span> model</code><code> = <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span>callee_procname:<a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a></span> <span>&#45;&gt;</span> <a href="../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>ret:<span>(<a href="../../IR/Ident/index.html#type-t">IR.Ident.t</a> * <a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span></span> <span>&#45;&gt;</span> <a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> <a href="../PulseAccessResult/index.html#type-t">PulseDomainInterface.AccessResult.t</a></span> list</span></code></dt></dl><dl><dt class="spec value" id="val-dispatch"><a href="#val-dispatch" class="anchor"></a><code><span class="keyword">val</span> dispatch : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <a href="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span> <a href="../../Absint/ProcnameDispatcher/Call/FuncArg/index.html#type-t">Absint.ProcnameDispatcher.Call.FuncArg.t</a></span> list</span> <span>&#45;&gt;</span> <span><a href="index.html#type-model">model</a> option</span></code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseObjectiveCSummary (infer.Pulselib.PulseObjectiveCSummary)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseObjectiveCSummary</nav><h1>Module <code>Pulselib.PulseObjectiveCSummary</code></h1></header><dl><dt class="spec value" id="val-update_objc_method_posts"><a href="#val-update_objc_method_posts" class="anchor"></a><code><span class="keyword">val</span> update_objc_method_posts : <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span>initial_astate:<a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a></span> <span>&#45;&gt;</span> <span>posts:<span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></span> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt><dd><p>For ObjC instance methods: adds path condition `self &gt; 0` to given posts and appends additional nil summary. Does nothing to posts for other kinds of methods</p></dd></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Closures (infer.Pulselib.PulseOperations.Closures)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; <a href="../index.html">PulseOperations</a> &#x00BB; Closures</nav><h1>Module <code>PulseOperations.Closures</code></h1></header><dl><dt class="spec value" id="val-check_captured_addresses"><a href="#val-check_captured_addresses" class="anchor"></a><code><span class="keyword">val</span> check_captured_addresses : <a href="../../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../index.html#type-t">t</a> <span>&#45;&gt;</span> <span><span>(<a href="../index.html#type-t">t</a>, <a href="../../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a> * <a href="../index.html#type-t">t</a>)</span> <a href="../../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.result</span></code></dt><dd><p>assert the validity of the addresses captured by the lambda</p></dd></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Closures (infer.Pulselib.PulseOperations.Closures)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; <a href="../index.html">PulseOperations</a> &#x00BB; Closures</nav><h1>Module <code>PulseOperations.Closures</code></h1></header><dl><dt class="spec value" id="val-check_captured_addresses"><a href="#val-check_captured_addresses" class="anchor"></a><code><span class="keyword">val</span> check_captured_addresses : <a href="../../../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../index.html#type-t">t</a> <span>&#45;&gt;</span> <span><a href="../index.html#type-t">t</a> <a href="../../PulseAccessResult/index.html#type-t">PulseDomainInterface.AccessResult.t</a></span></code></dt><dd><p>assert the validity of the addresses captured by the lambda</p></dd></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseReport (infer.Pulselib.PulseReport)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseReport</nav><h1>Module <code>Pulselib.PulseReport</code></h1></header><dl><dt class="spec type" id="type-access_result"><a href="#type-access_result" class="anchor"></a><code><span class="keyword">type</span> <span>'a access_result</span></code><code> = <span><span>(<span class="type-var">'a</span>, <a href="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a> * <a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a>)</span> <a href="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.result</span></code></dt></dl><dl><dt class="spec value" id="val-report_list_result"><a href="#val-report_list_result" class="anchor"></a><code><span class="keyword">val</span> report_list_result : <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><span><a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> list</span> <a href="index.html#type-access_result">access_result</a></span> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt><dt class="spec value" id="val-report_results"><a href="#val-report_results" class="anchor"></a><code><span class="keyword">val</span> report_results : <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> <a href="index.html#type-access_result">access_result</a></span> list</span> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseReport (infer.Pulselib.PulseReport)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseReport</nav><h1>Module <code>Pulselib.PulseReport</code></h1></header><dl><dt class="spec value" id="val-report_result"><a href="#val-report_result" class="anchor"></a><code><span class="keyword">val</span> report_result : <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> <a href="../PulseAccessResult/index.html#type-t">PulseDomainInterface.AccessResult.t</a></span> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt><dt class="spec value" id="val-report_results"><a href="#val-report_results" class="anchor"></a><code><span class="keyword">val</span> report_results : <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><span><a href="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a> <a href="../PulseAccessResult/index.html#type-t">PulseDomainInterface.AccessResult.t</a></span> list</span> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt><dt class="spec value" id="val-report_exec_results"><a href="#val-report_exec_results" class="anchor"></a><code><span class="keyword">val</span> report_exec_results : <span><a href="../PulseSummary/index.html#type-t">PulseSummary.t</a> <a href="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> <a href="../PulseAccessResult/index.html#type-t">PulseDomainInterface.AccessResult.t</a></span> list</span> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseSummary (infer.Pulselib.PulseSummary)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseSummary</nav><h1>Module <code>Pulselib.PulseSummary</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> = <span><a href="../PulseExecutionDomain/index.html#type-summary">PulseDomainInterface.ExecutionDomain.summary</a> list</span></code></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-yojson_of_t"><a href="#val-yojson_of_t" class="anchor"></a><code><span class="keyword">val</span> yojson_of_t : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-of_posts"><a href="#val-of_posts" class="anchor"></a><code><span class="keyword">val</span> of_posts : <a href="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : Stdlib.Format.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseSummary (infer.Pulselib.PulseSummary)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib</a> &#x00BB; PulseSummary</nav><h1>Module <code>Pulselib.PulseSummary</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> = <span><a href="../PulseExecutionDomain/index.html#type-summary">PulseDomainInterface.ExecutionDomain.summary</a> list</span></code></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-yojson_of_t"><a href="#val-yojson_of_t" class="anchor"></a><code><span class="keyword">val</span> yojson_of_t : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-of_posts"><a href="#val-of_posts" class="anchor"></a><code><span class="keyword">val</span> of_posts : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>&#45;&gt;</span> <span><a href="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : Stdlib.Format.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseAccessResult (infer.Pulselib__PulseAccessResult)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseAccessResult</nav><h1>Module <code>Pulselib__PulseAccessResult</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../Pulselib/index.html#module-PulseAbductiveDomain">Pulselib.PulseAbductiveDomain</a></code></div><dl><dt class="spec type" id="type-error"><a href="#type-error" class="anchor"></a><code><span class="keyword">type</span> <span>'astate error</span></code><code> = </code><table class="variant"><tr id="type-error.ReportableError" class="anchored"><td class="def constructor"><a href="#type-error.ReportableError" class="anchor"></a><code>| </code><code><span class="constructor">ReportableError</span> <span class="keyword">of</span> </code><code>{</code><table class="record"><tr id="type-error.astate" class="anchored"><td class="def field"><a href="#type-error.astate" class="anchor"></a><code>astate : <span class="type-var">'astate</span>;</code></td></tr><tr id="type-error.diagnostic" class="anchored"><td class="def field"><a href="#type-error.diagnostic" class="anchor"></a><code>diagnostic : <a href="../Pulselib/PulseDiagnostic/index.html#type-t">Pulselib.PulseBasicInterface.Diagnostic.t</a>;</code></td></tr></table><code>}</code></td></tr><tr id="type-error.ISLError" class="anchored"><td class="def constructor"><a href="#type-error.ISLError" class="anchor"></a><code>| </code><code><span class="constructor">ISLError</span> <span class="keyword">of</span> <span class="type-var">'astate</span></code></td></tr></table></dt><dt class="spec type" id="type-base_t"><a href="#type-base_t" class="anchor"></a><code><span class="keyword">type</span> <span>('a, 'astate) base_t</span></code><code> = <span><span>(<span class="type-var">'a</span>, <span><span class="type-var">'astate</span> <a href="index.html#type-error">error</a></span>)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.result</span></code></dt><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> <span>'a t</span></code><code> = <span><span>(<span class="type-var">'a</span>, <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a>)</span> <a href="index.html#type-base_t">base_t</a></span></code></dt></dl><dl><dt class="spec value" id="val-to_summary"><a href="#val-to_summary" class="anchor"></a><code><span class="keyword">val</span> to_summary : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="index.html#type-error">error</a></span> <span>&#45;&gt;</span> <span><span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <a href="index.html#type-error">error</a></span> <a href="../Pulselib/PulseSatUnsat/index.html#type-t">Pulselib.PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>DynamicTypes (infer.Pulselib__PulseFormula.DynamicTypes)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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">Pulselib__PulseFormula</a> &#x00BB; DynamicTypes</nav><h1>Module <code>Pulselib__PulseFormula.DynamicTypes</code></h1><p>Module for reasoning about dynamic types. *</p></header><dl><dt class="spec value" id="val-simplify"><a href="#val-simplify" class="anchor"></a><code><span class="keyword">val</span> simplify : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span>get_dynamic_type:<span>(<a href="../../Pulselib/PulseAbstractValue/index.html#type-t">Var.t</a> <span>&#45;&gt;</span> <span><a href="../../IR/Typ/index.html#type-t">IR.Typ.t</a> option</span>)</span></span> <span>&#45;&gt;</span> <a href="../index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../index.html#type-t">t</a></code></dt><dd><p>Simplifies <code>IsInstanceOf(var, typ)</code> predicate when dynamic type information is available in state. *</p></dd></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseInterproc (infer.Pulselib__PulseInterproc)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseInterproc</nav><h1>Module <code>Pulselib__PulseInterproc</code></h1></header><dl><dt class="spec value" id="val-apply_prepost"><a href="#val-apply_prepost" class="anchor"></a><code><span class="keyword">val</span> apply_prepost : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>callee_prepost:<a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a></span> <span>&#45;&gt;</span> <span>captured_vars_with_actuals:<span><span>(<a href="../IR/Var/index.html#type-t">IR.Var.t</a> * <span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span>)</span> list</span></span> <span>&#45;&gt;</span> <span>formals:<span><a href="../IR/Var/index.html#type-t">IR.Var.t</a> list</span></span> <span>&#45;&gt;</span> <span>actuals:<span><span>(<span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> * <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> list</span></span> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> * <span><span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> option</span>)</span> <a href="../Pulselib/PulseReport/index.html#type-access_result">Pulselib.PulseReport.access_result</a></span> <a href="../Pulselib/PulseSatUnsat/index.html#type-t">Pulselib.PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseInterproc (infer.Pulselib__PulseInterproc)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseInterproc</nav><h1>Module <code>Pulselib__PulseInterproc</code></h1></header><dl><dt class="spec value" id="val-apply_prepost"><a href="#val-apply_prepost" class="anchor"></a><code><span class="keyword">val</span> apply_prepost : <span>is_isl_error_prepost:bool</span> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>callee_prepost:<a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a></span> <span>&#45;&gt;</span> <span>captured_vars_with_actuals:<span><span>(<a href="../IR/Var/index.html#type-t">IR.Var.t</a> * <span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span>)</span> list</span></span> <span>&#45;&gt;</span> <span>formals:<span><a href="../IR/Var/index.html#type-t">IR.Var.t</a> list</span></span> <span>&#45;&gt;</span> <span>actuals:<span><span>(<span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> * <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span> list</span></span> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> * <span><span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> option</span>)</span> <a href="../Pulselib/PulseAccessResult/index.html#type-t">Pulselib.PulseDomainInterface.AccessResult.t</a></span> <a href="../Pulselib/PulseSatUnsat/index.html#type-t">Pulselib.PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseLatentIssue (infer.Pulselib__PulseLatentIssue)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseLatentIssue</nav><h1>Module <code>Pulselib__PulseLatentIssue</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../Pulselib/index.html#module-PulseAbductiveDomain">Pulselib.PulseAbductiveDomain</a></code></div><aside><p>A subset of <code>PulseDiagnostic</code> that can be &quot;latent&quot;, i.e. there is a potential issue in the code but we want to delay reporting until we see the conditions for the bug manifest themselves in some calling context.</p></aside><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.AccessToInvalidAddress" class="anchored"><td class="def constructor"><a href="#type-t.AccessToInvalidAddress" class="anchor"></a><code>| </code><code><span class="constructor">AccessToInvalidAddress</span> <span class="keyword">of</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-access_to_invalid_address">Pulselib.PulseBasicInterface.Diagnostic.access_to_invalid_address</a></code></td></tr><tr id="type-t.ReadUninitializedValue" class="anchored"><td class="def constructor"><a href="#type-t.ReadUninitializedValue" class="anchor"></a><code>| </code><code><span class="constructor">ReadUninitializedValue</span> <span class="keyword">of</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-read_uninitialized_value">Pulselib.PulseBasicInterface.Diagnostic.read_uninitialized_value</a></code></td></tr></table></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt><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-yojson_of_t"><a href="#val-yojson_of_t" class="anchor"></a><code><span class="keyword">val</span> yojson_of_t : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-to_diagnostic"><a href="#val-to_diagnostic" class="anchor"></a><code><span class="keyword">val</span> to_diagnostic : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-t">Pulselib.PulseBasicInterface.Diagnostic.t</a></code></dt><dt class="spec value" id="val-should_report"><a href="#val-should_report" class="anchor"></a><code><span class="keyword">val</span> should_report : <a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-should_report_diagnostic"><a href="#val-should_report_diagnostic" class="anchor"></a><code><span class="keyword">val</span> should_report_diagnostic : <a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-t">Pulselib.PulseBasicInterface.Diagnostic.t</a> <span>&#45;&gt;</span> <span>[ `ReportNow <span><span>| `DelayReport</span> of <a href="index.html#type-t">t</a></span> ]</span></code></dt><dt class="spec value" id="val-add_call"><a href="#val-add_call" class="anchor"></a><code><span class="keyword">val</span> add_call : <span>(<a href="../Pulselib/PulseCallEvent/index.html#type-t">Pulselib.PulseBasicInterface.CallEvent.t</a> * <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a>)</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseLatentIssue (infer.Pulselib__PulseLatentIssue)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseLatentIssue</nav><h1>Module <code>Pulselib__PulseLatentIssue</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../Pulselib/index.html#module-PulseAbductiveDomain">Pulselib.PulseAbductiveDomain</a></code></div><aside><p>A subset of <code>PulseDiagnostic</code> that can be &quot;latent&quot;, i.e. there is a potential issue in the code but we want to delay reporting until we see the conditions for the bug manifest themselves in some calling context.</p></aside><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.AccessToInvalidAddress" class="anchored"><td class="def constructor"><a href="#type-t.AccessToInvalidAddress" class="anchor"></a><code>| </code><code><span class="constructor">AccessToInvalidAddress</span> <span class="keyword">of</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-access_to_invalid_address">Pulselib.PulseBasicInterface.Diagnostic.access_to_invalid_address</a></code></td></tr><tr id="type-t.ReadUninitializedValue" class="anchored"><td class="def constructor"><a href="#type-t.ReadUninitializedValue" class="anchor"></a><code>| </code><code><span class="constructor">ReadUninitializedValue</span> <span class="keyword">of</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-read_uninitialized_value">Pulselib.PulseBasicInterface.Diagnostic.read_uninitialized_value</a></code></td></tr></table></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt><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-yojson_of_t"><a href="#val-yojson_of_t" class="anchor"></a><code><span class="keyword">val</span> yojson_of_t : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-to_diagnostic"><a href="#val-to_diagnostic" class="anchor"></a><code><span class="keyword">val</span> to_diagnostic : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseDiagnostic/index.html#type-t">Pulselib.PulseBasicInterface.Diagnostic.t</a></code></dt><dt class="spec value" id="val-should_report"><a href="#val-should_report" class="anchor"></a><code><span class="keyword">val</span> should_report : <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> <a href="../Pulselib/PulseAccessResult/index.html#type-error">Pulselib.PulseAccessResult.error</a></span> <span>&#45;&gt;</span> <span>[&gt; <span>`DelayReport of <a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> * <a href="index.html#type-t">t</a></span> <span><span>| `ReportNow</span> of <a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a> * <a href="../Pulselib/PulseDiagnostic/index.html#type-t">Pulselib.PulseBasicInterface.Diagnostic.t</a></span> <span><span>| `ISLDelay</span> of <a href="../Pulselib/PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a></span> ]</span></code></dt><dt class="spec value" id="val-add_call"><a href="#val-add_call" class="anchor"></a><code><span class="keyword">val</span> add_call : <span>(<a href="../Pulselib/PulseCallEvent/index.html#type-t">Pulselib.PulseBasicInterface.CallEvent.t</a> * <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a>)</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseModels (infer.Pulselib__PulseModels)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseModels</nav><h1>Module <code>Pulselib__PulseModels</code></h1></header><dl><dt class="spec type" id="type-model"><a href="#type-model" class="anchor"></a><code><span class="keyword">type</span> model</code><code> = <span><a href="../Pulselib/PulseSummary/index.html#type-t">Pulselib.PulseSummary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span>callee_procname:<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a></span> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>ret:<span>(<a href="../IR/Ident/index.html#type-t">IR.Ident.t</a> * <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span></span> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><a href="../Pulselib/PulseExecutionDomain/index.html#type-t">Pulselib.PulseDomainInterface.ExecutionDomain.t</a> <a href="../Pulselib/PulseOperations/index.html#type-access_result">Pulselib.PulseOperations.access_result</a></span> list</span></code></dt></dl><dl><dt class="spec value" id="val-dispatch"><a href="#val-dispatch" class="anchor"></a><code><span class="keyword">val</span> dispatch : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> <a href="../Absint/ProcnameDispatcher/Call/FuncArg/index.html#type-t">Absint.ProcnameDispatcher.Call.FuncArg.t</a></span> list</span> <span>&#45;&gt;</span> <span><a href="index.html#type-model">model</a> option</span></code></dt></dl></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseModels (infer.Pulselib__PulseModels)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseModels</nav><h1>Module <code>Pulselib__PulseModels</code></h1></header><dl><dt class="spec type" id="type-model"><a href="#type-model" class="anchor"></a><code><span class="keyword">type</span> model</code><code> = <span><a href="../Pulselib/PulseSummary/index.html#type-t">Pulselib.PulseSummary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span>callee_procname:<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a></span> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span>ret:<span>(<a href="../IR/Ident/index.html#type-t">IR.Ident.t</a> * <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a>)</span></span> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">Pulselib.PulseDomainInterface.AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><span><a href="../Pulselib/PulseExecutionDomain/index.html#type-t">Pulselib.PulseDomainInterface.ExecutionDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">Pulselib.PulseDomainInterface.AccessResult.t</a></span> list</span></code></dt></dl><dl><dt class="spec value" id="val-dispatch"><a href="#val-dispatch" class="anchor"></a><code><span class="keyword">val</span> dispatch : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><span><span>(<a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <a href="../Pulselib/PulseValueHistory/index.html#type-t">Pulselib.PulseBasicInterface.ValueHistory.t</a>)</span> <a href="../Absint/ProcnameDispatcher/Call/FuncArg/index.html#type-t">Absint.ProcnameDispatcher.Call.FuncArg.t</a></span> list</span> <span>&#45;&gt;</span> <span><a href="index.html#type-model">model</a> option</span></code></dt></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseObjectiveCSummary (infer.Pulselib__PulseObjectiveCSummary)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Pulselib__PulseObjectiveCSummary</nav><h1>Module <code>Pulselib__PulseObjectiveCSummary</code></h1></header><dl><dt class="spec value" id="val-update_objc_method_posts"><a href="#val-update_objc_method_posts" class="anchor"></a><code><span class="keyword">val</span> update_objc_method_posts : <span><a href="../Pulselib/PulseSummary/index.html#type-t">Pulselib.PulseSummary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span>initial_astate:<a href="../Pulselib/PulseExecutionDomain/index.html#type-t">Pulselib.PulseDomainInterface.ExecutionDomain.t</a></span> <span>&#45;&gt;</span> <span>posts:<span><a href="../Pulselib/PulseExecutionDomain/index.html#type-t">Pulselib.PulseDomainInterface.ExecutionDomain.t</a> list</span></span> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseExecutionDomain/index.html#type-t">Pulselib.PulseDomainInterface.ExecutionDomain.t</a> list</span></code></dt><dd><p>For ObjC instance methods: adds path condition `self &gt; 0` to given posts and appends additional nil summary. Does nothing to posts for other kinds of methods</p></dd></dl></div></body></html>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save