make doc-publish

Summary:
Needed to remove user_documentation for the new
CONFIG_CHECK_BETWEEN_MARKERS issue type otherwise it violated the
invariant that the corresponding checker should be documented too but
its development has just started.

Reviewed By: skcho

Differential Revision: D22065820

fbshipit-source-id: 4b3a58850
master
Jules Villard 5 years ago committed by Facebook GitHub Bot
parent 2e7848b179
commit 6e37247b7b

@ -409,10 +409,10 @@ let condition_always_true =
~user_documentation:"A condition expression is **always** evaluated to true."
(* ~user_documentation:"A config checking is done between a marker's start and end" *)
let config_checks_between_markers =
register_from_string ~enabled:false ~id:"CONFIG_CHECKS_BETWEEN_MARKERS" Advice
ConfigChecksBetweenMarkers
~user_documentation:"A config checking is done between a marker's start and end"
let constant_address_dereference =

@ -3,8 +3,8 @@
"This is a @generated file, run `make doc-publish` from the root of the infer repository to generate it",
"doc_entries": [
"all-issue-types", "checker-annotation-reachability",
"checker-biabduction", "checker-bufferoverrun", "checker-class-loads",
"checker-cost", "checker-eradicate", "checker-fragment-retains-view",
"checker-biabduction", "checker-bufferoverrun", "checker-cost",
"checker-eradicate", "checker-fragment-retains-view",
"checker-immutable-cast", "checker-inefficient-keyset-iterator",
"checker-linters", "checker-litho-required-props", "checker-liveness",
"checker-loop-hoisting", "checker-printf-args", "checker-pulse",

@ -33,6 +33,95 @@ integer pointed to by `n` is nonzero (e.g., she may have meant to call an
accessor like `[n intValue]` instead). Infer will ask the programmer explicitly
compare `n` to `nil` or call an accessor to clarify her intention.
## BUFFER_OVERRUN_L1
Reported as "Buffer Overrun L1" by [bufferoverrun](checker-bufferoverrun.md).
Buffer overrun reports fall into several "buckets" corresponding to the expected precision of the
report. The higher the number, the more likely it is to be a false positive.
* `L1`: The most faithful report, when it *must* be unsafe. For example, array size: `[5,5]`,
offset: `[3,3]`.
* `L2`: Less faithful report than `L1`, when it *may* be unsafe. For example, array size:`[5,5]`,
offset: `[0,5]`. Note that the offset may be a safe value in the real execution, i.e. 0, 1, 2,
3, 4.
* `L5`: The least faithful report, when there is an interval top. For example, array size:
`[5,5]`, offset: `[-oo,+oo]`.
* `L4`: More faithful report than `L5`, when there is an infinity value. For example, array size:
`[5,5]`, offset: `[0, +oo]`.
* `L3`: The reports that are not included in the above cases.
Other than them, there are some specific-purpose buffer overrun reports as follows.
* `R2`: An array access is unsafe by *risky* array values from `strndup`. For example, suppose
there is a `strndup` call as follows.
```c
char* s1 = (char*)malloc(sizeof(char) * size);
for (int i = 0; i < size; i++) {
s1[i] = 'a';
}
s1[5] = '\0';
char* s2 = strndup(s1, size - 1);
s2[size - 1] = 'a';
```
Even if the second parameter of `strndup` is `size - 1`, the length of `s2` can be shorter than
`size` if there is the null character in the middle of `s1`.
* `S2`: An array access is unsafe by symbolic values. For example, array size: `[n,n]`, offset
`[n,+oo]`.
* `T1`: An array access is unsafe by tainted external values. This is experimental and will be
removed sooner or later.
* `U5`: An array access is unsafe by unknown values, which are usually from unknown function
calls.
## BUFFER_OVERRUN_L2
Reported as "Buffer Overrun L2" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_L3
Reported as "Buffer Overrun L3" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_L4
Reported as "Buffer Overrun L4" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_L5
Reported as "Buffer Overrun L5" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_R2
Reported as "Buffer Overrun R2" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_S2
Reported as "Buffer Overrun S2" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_T1
Reported as "Buffer Overrun T1" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_U5
Reported as "Buffer Overrun U5" by [bufferoverrun](checker-bufferoverrun.md).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## CAPTURED_STRONG_SELF
Reported as "Captured strongSelf" by [self-in-block](checker-self-in-block.md).
@ -46,6 +135,68 @@ This will happen in one of two cases generally:
local variable to the block. If `strongSelf` is used in the inside block,
then it's not a local variable anymore, but a captured variable.
## CHECKERS_ALLOCATES_MEMORY
Reported as "Allocates Memory" by [annotation-reachability](checker-annotation-reachability.md).
A method annotated with `@NoAllocation` transitively calls `new`.
Example:
```java
class C implements I {
@NoAllocation
void directlyAllocatingMethod() {
new Object();
}
}
```
## CHECKERS_ANNOTATION_REACHABILITY_ERROR
Reported as "Annotation Reachability Error" by [annotation-reachability](checker-annotation-reachability.md).
A method annotated with an annotation `@A` transitively calls a method annotated `@B` where the combination of annotations is forbidden (for example, `@UiThread` calling `@WorkerThread`).
## CHECKERS_CALLS_EXPENSIVE_METHOD
Reported as "Expensive Method Called" by [annotation-reachability](checker-annotation-reachability.md).
A method annotated with `@PerformanceCritical` transitively calls a method annotated `@Expensive`.
Example:
```java
class C {
@PerformanceCritical
void perfCritical() {
expensive();
}
@Expensive
void expensive() {}
}
```
## CHECKERS_EXPENSIVE_OVERRIDES_UNANNOTATED
Reported as "Expensive Overrides Unannotated" by [annotation-reachability](checker-annotation-reachability.md).
A method annotated with `@Expensive` overrides an un-annotated method.
Example:
```java
interface I {
void foo();
}
class A implements I {
@Expensive
public void foo() {}
}
```
## CHECKERS_FRAGMENT_RETAINS_VIEW
Reported as "Fragment Retains View" by [fragment-retains-view](checker-fragment-retains-view.md).
@ -80,6 +231,20 @@ list e.g. by adding elements.
Action: you can change the return type to be immutable, or make a copy of the
collection so that it can be modified.
## CHECKERS_PRINTF_ARGS
Reported as "Checkers Printf Args" by [printf-args](checker-printf-args.md).
This error is reported when the argument types to a `printf` method do not match the format string.
```java
void stringInsteadOfInteger(PrintStream out) {
out.printf("Hello %d", "world");
}
```
Action: fix the mismatch between format string and argument types.
## COMPONENT_FACTORY_FUNCTION
Reported as "Component Factory Function" by [linters](checker-linters.md).
@ -101,6 +266,37 @@ Reported as "Component With Unconventional Superclass" by [linters](checker-lint
[Doc in ComponentKit page](http://componentkit.org/docs/never-subclass-components)
## CONDITION_ALWAYS_FALSE
Reported as "Condition Always False" by [bufferoverrun](checker-bufferoverrun.md).
A condition expression is **always** evaluated to false.
## CONDITION_ALWAYS_TRUE
Reported as "Condition Always True" by [bufferoverrun](checker-bufferoverrun.md).
A condition expression is **always** evaluated to true.
## CONSTANT_ADDRESS_DEREFERENCE
Reported as "Constant Address Dereference" by [pulse](checker-pulse.md).
This is reported when an address obtained via a non-zero constant is
dereferenced. If the address is zero then
[`NULLPTR_DEREFERENCE`](#nullptr_dereference) is reported instead.
For example, `int *p = (int *) 123; *p = 42;` generates this issue
type.
## CREATE_INTENT_FROM_URI
Reported as "Create Intent From Uri" by [quandary](checker-quandary.md).
Create an intent/start a component using a (possibly user-controlled) URI. may or may not be an issue depending on where the URI comes from.
## CROSS_SITE_SCRIPTING
Reported as "Cross Site Scripting" by [quandary](checker-quandary.md).
Untrusted data flows into HTML; XSS risk.
## CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK
Reported as "Cxx Reference Captured In Objc Block" by [linters](checker-linters.md).
@ -526,6 +722,60 @@ the annotations of any method called directly by the current method, if
relevant. If the annotations are correct, you can remove the @Nullable
annotation.
## EXECUTION_TIME_COMPLEXITY_INCREASE
Reported as "Execution Time Complexity Increase" by [cost](checker-cost.md).
Infer reports this issue when the execution time complexity of a
program increases in degree: e.g. from constant to linear or from
logarithmic to quadratic. This issue type is only reported in
differential mode: i.e when we are comparing the analysis results of
two runs of infer on a file.
## EXECUTION_TIME_COMPLEXITY_INCREASE_UI_THREAD
Reported as "Execution Time Complexity Increase Ui Thread" by [cost](checker-cost.md).
Infer reports this issue when the execution time complexity of the procedure increases in degree **and** the procedure runs on the UI (main) thread.
Infer considers a method as running on the UI thread whenever:
- The method, one of its overrides, its class, or an ancestral class, is
annotated with `@UiThread`.
- The method, or one of its overrides is annotated with `@OnEvent`, `@OnClick`,
etc.
- The method or its callees call a `Litho.ThreadUtils` method such as
`assertMainThread`.
## EXECUTION_TIME_UNREACHABLE_AT_EXIT
Reported as "Execution Time Unreachable At Exit" by [cost](checker-cost.md).
This issue type indicates that the program's execution doesn't reach
the exit node. Hence, we cannot compute a static bound for the
procedure.
Examples:
```java
void exit_unreachable() {
exit(0); // modeled as unreachable
}
void infeasible_path_unreachable() {
Preconditions.checkState(false); // like assert false, state pruned to bottom
}
```
## EXPOSED_INSECURE_INTENT_HANDLING
Reported as "Exposed Insecure Intent Handling" by [quandary](checker-quandary.md).
Undocumented.
## GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL
Reported as "Global Variable Initialized With Function Or Method Call" by [linters](checker-linters.md).
@ -535,6 +785,160 @@ method or function call. The warning wants to make you aware that some functions
are expensive. As the global variables are initialized before main() is called,
these initializations can slow down the start-up time of an app.
## GUARDEDBY_VIOLATION
Reported as "GuardedBy Violation" by [racerd](checker-racerd.md).
A field annotated with `@GuardedBy` is being accessed by a call-chain that starts at a non-private method without synchronization.
Example:
```java
class C {
@GuardedBy("this")
String f;
void foo(String s) {
f = s; // unprotected access here
}
}
```
Action: Protect the offending access by acquiring the lock indicated by the `@GuardedBy(...)`.
## INEFFICIENT_KEYSET_ITERATOR
Reported as "Inefficient Keyset Iterator" by [inefficient-keyset-iterator](checker-inefficient-keyset-iterator.md).
This issue is raised when
- iterating over a HashMap with `ketSet()` iterator
- looking up the key each time
Instead, it is more efficient to iterate over the loop with `entrySet` which returns key-vaue pairs and gets rid of the hashMap lookup.
For instance, we would raise an issue for the following program:
```java
void inefficient_loop_bad(HashMap<String, Integer> testMap) {
for (String key : testMap.keySet()) {
Integer value = testMap.get(key); // extra look-up cost
foo(key, value);
}
}
```
Instead, it is more efficient to have:
```java
void efficient_loop_ok(HashMap<String, Integer> testMap) {
for (Map.Entry<String, Integer> entry : testMap.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
foo(key, value);
}
}
```
## INFERBO_ALLOC_IS_BIG
Reported as "Inferbo Alloc Is Big" by [bufferoverrun](checker-bufferoverrun.md).
`malloc` is passed a large constant value.
## INFERBO_ALLOC_IS_NEGATIVE
Reported as "Inferbo Alloc Is Negative" by [bufferoverrun](checker-bufferoverrun.md).
`malloc` is called with a negative size.
## INFERBO_ALLOC_IS_ZERO
Reported as "Inferbo Alloc Is Zero" by [bufferoverrun](checker-bufferoverrun.md).
`malloc` is called with a zero size.
## INFERBO_ALLOC_MAY_BE_BIG
Reported as "Inferbo Alloc May Be Big" by [bufferoverrun](checker-bufferoverrun.md).
`malloc` *may* be called with a large value.
## INFERBO_ALLOC_MAY_BE_NEGATIVE
Reported as "Inferbo Alloc May Be Negative" by [bufferoverrun](checker-bufferoverrun.md).
`malloc` *may* be called with a negative value.
## INFERBO_ALLOC_MAY_BE_TAINTED
Reported as "Inferbo Alloc May Be Tainted" by [bufferoverrun](checker-bufferoverrun.md).
`malloc` *may* be called with a tainted value from external sources. This is experimental and will be removed sooner or later.
## INFINITE_EXECUTION_TIME
Reported as "Infinite Execution Time" by [cost](checker-cost.md).
This warning indicates that Infer was not able to determine a static
upper bound on the execution cost of the procedure. By default, this
issue type is disabled.
For instance, Inferbo's interval analysis is limited to affine
expressions. Hence, we can't statically estimate an upper bound on the
below example and obtain T(unknown) cost:
```java
// Expected: square root(x), got T
void square_root_FP(int x) {
int i = 0;
while (i * i < x) {
i++;
}
}
```
Consequently, we report an `INFINITE_EXECUTION_TIME`, corresponding to the biggest bound T.
## INSECURE_INTENT_HANDLING
Reported as "Insecure Intent Handling" by [quandary](checker-quandary.md).
Undocumented.
## INTEGER_OVERFLOW_L1
Reported as "Integer Overflow L1" by [bufferoverrun](checker-bufferoverrun.md).
Integer overflows reports fall into several "buckets" corresponding to the expected precision of the
report. The higher the number, the more likely it is to be a false positive.
* `L1`: The most faithful report, when it *must* be unsafe. For example,
`[2147483647,2147483647] + [1,1]` in 32-bit signed integer type.
* `L2`: Less faithful report than `L1`, when it *may* be unsafe. For example,
`[2147483647,2147483647] + [0,1]` in 32-bit signed integer type. Note that the integer of RHS
can be 0, which is safe.
* `L5`: The reports that are not included in the above cases.
Other than them, there as some specific-purpose buffer overrun reports as follows.
* `R2`: A binary integer operation is unsafe by *risky* return values from `strndup`.
* `U5`: A binary integer operation is unsafe by unknown values, which are usually from unknown
function calls.
## INTEGER_OVERFLOW_L2
Reported as "Integer Overflow L2" by [bufferoverrun](checker-bufferoverrun.md).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_L5
Reported as "Integer Overflow L5" by [bufferoverrun](checker-bufferoverrun.md).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_R2
Reported as "Integer Overflow R2" by [bufferoverrun](checker-bufferoverrun.md).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_U5
Reported as "Integer Overflow U5" by [bufferoverrun](checker-bufferoverrun.md).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTERFACE_NOT_THREAD_SAFE
Reported as "Interface Not Thread Safe" by [racerd](checker-racerd.md).
@ -565,6 +969,34 @@ parameter is `nil`. For example:
Possible solutions are adding a check for `nil`, or making sure that the method
is not called with `nil`.
## JAVASCRIPT_INJECTION
Reported as "Javascript Injection" by [quandary](checker-quandary.md).
Untrusted data flows into JavaScript.
## LOCKLESS_VIOLATION
Reported as "Lockless Violation" by [starvation](checker-starvation.md).
A method implements an interface signature annotated with `@Lockless` but which transitively acquires a lock.
Example:
```java
Interface I {
@Lockless
public void no_lock();
}
class C implements I {
private synchronized do_lock() {}
public void no_lock() { // this method should not acquire any locks
do_lock();
}
}
```
## LOCK_CONSISTENCY_VIOLATION
Reported as "Lock Consistency Violation" by [racerd](checker-racerd.md).
@ -590,9 +1022,14 @@ container (an array, a vector, etc).
Infer considers a method as private if it's not exported in the header-file
interface.
## LOGGING_PRIVATE_DATA
Reported as "Logging Private Data" by [quandary](checker-quandary.md).
Undocumented.
## MEMORY_LEAK
Reported as "Memory Leak" by [biabduction](checker-biabduction.md).
Reported as "Memory Leak" by [pulse](checker-pulse.md).
### Memory leak in C
@ -644,6 +1081,11 @@ Reported as "Mutable Local Variable In Component File" by [linters](checker-lint
[Doc in ComponentKit page](http://componentkit.org/docs/avoid-local-variables)
## NULLPTR_DEREFERENCE
Reported as "Nullptr Dereference" by [pulse](checker-pulse.md).
See [NULL_DEREFERENCE](#null_dereference).
## NULL_DEREFERENCE
Reported as "Null Dereference" by [biabduction](checker-biabduction.md).
@ -804,6 +1246,11 @@ An example of such variadic methods is
In this example, if `str` is `nil` then an array `@[@"aaa"]` of size 1 will be
created, and not an array `@[@"aaa", str, @"bbb"]` of size 3 as expected.
## QUANDARY_TAINT_ERROR
Reported as "Taint Error" by [quandary](checker-quandary.md).
Generic taint error when nothing else fits.
## REGISTERED_OBSERVER_BEING_DEALLOCATED
Reported as "Registered Observer Being Deallocated" by [linters](checker-linters.md).
@ -1127,6 +1574,44 @@ hierarchy:
@end
```
## SHELL_INJECTION
Reported as "Shell Injection" by [quandary](checker-quandary.md).
Environment variable or file data flowing to shell.
## SHELL_INJECTION_RISK
Reported as "Shell Injection Risk" by [quandary](checker-quandary.md).
Code injection if the caller of the endpoint doesn't sanitize on its end.
## SQL_INJECTION
Reported as "Sql Injection" by [quandary](checker-quandary.md).
Untrusted and unescaped data flows to SQL.
## SQL_INJECTION_RISK
Reported as "Sql Injection Risk" by [quandary](checker-quandary.md).
Untrusted and unescaped data flows to SQL.
## STACK_VARIABLE_ADDRESS_ESCAPE
Reported as "Stack Variable Address Escape" by [pulse](checker-pulse.md).
Reported when an address pointing into the stack of the current
function will escape to its calling context. Such addresses will
become invalid by the time the function actually returns so are
potentially dangerous.
For example, directly returning a pointer to a local variable:
```C
int* foo() {
int x = 42;
return &x; // <-- warn here that "&x" will escape
}
```
## STARVATION
Reported as "UI Thread Starvation" by [starvation](checker-starvation.md).
@ -1362,6 +1847,121 @@ if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_9_0) {
}
```
## UNINITIALIZED_VALUE
Reported as "Uninitialized Value" by [uninit](checker-uninit.md).
A value is read before it has been initialized. For example, in C:
```C
struct coordinates {
int x;
int y;
};
void foo() {
struct coordinates c;
c.x = 42;
c.y++; // uninitialized value c.y!
int z;
if (z == 0) { // uninitialized value z!
// something
}
}
```
## UNREACHABLE_CODE
Reported as "Unreachable Code" by [bufferoverrun](checker-bufferoverrun.md).
A program point is unreachable.
## UNTRUSTED_BUFFER_ACCESS
Reported as "Untrusted Buffer Access" by [quandary](checker-quandary.md).
Untrusted data of any kind flowing to buffer.
## UNTRUSTED_DESERIALIZATION
Reported as "Untrusted Deserialization" by [quandary](checker-quandary.md).
User-controlled deserialization.
## UNTRUSTED_DESERIALIZATION_RISK
Reported as "Untrusted Deserialization Risk" by [quandary](checker-quandary.md).
User-controlled deserialization
## UNTRUSTED_ENVIRONMENT_CHANGE_RISK
Reported as "Untrusted Environment Change Risk" by [quandary](checker-quandary.md).
User-controlled environment mutation.
## UNTRUSTED_FILE
Reported as "Untrusted File" by [quandary](checker-quandary.md).
User-controlled file creation; may be vulnerable to path traversal and more.
## UNTRUSTED_FILE_RISK
Reported as "Untrusted File Risk" by [quandary](checker-quandary.md).
User-controlled file creation; may be vulnerable to path traversal and more.
## UNTRUSTED_HEAP_ALLOCATION
Reported as "Untrusted Heap Allocation" by [quandary](checker-quandary.md).
Untrusted data of any kind flowing to heap allocation. this can cause crashes or DOS.
## UNTRUSTED_INTENT_CREATION
Reported as "Untrusted Intent Creation" by [quandary](checker-quandary.md).
Creating an Intent from user-controlled data.
## UNTRUSTED_URL_RISK
Reported as "Untrusted Url Risk" by [quandary](checker-quandary.md).
Untrusted flag, environment variable, or file data flowing to URL.
## UNTRUSTED_VARIABLE_LENGTH_ARRAY
Reported as "Untrusted Variable Length Array" by [quandary](checker-quandary.md).
Untrusted data of any kind flowing to stack buffer allocation. Trying to allocate a stack buffer that's too large will cause a stack overflow.
## USER_CONTROLLED_SQL_RISK
Reported as "User Controlled Sql Risk" by [quandary](checker-quandary.md).
Untrusted data flows to SQL (no injection risk).
## USE_AFTER_DELETE
Reported as "Use After Delete" by [pulse](checker-pulse.md).
An address that was invalidated by a call to `delete` in C++ is dereferenced.
## USE_AFTER_FREE
Reported as "Use After Free" by [pulse](checker-pulse.md).
An address that was invalidated by a call to `free` in C is dereferenced.
## USE_AFTER_LIFETIME
Reported as "Use After Lifetime" by [pulse](checker-pulse.md).
The lifetime of an object has ended but that object is being
accessed. For example, the address of a variable holding a C++ object
is accessed after the variable has gone out of scope:
```C++
void foo() {
X* p;
{ // new scope
X x = X();
p = &x;
} // x has gone out of scope
p->method(); // ERROR: you should not access *p after x has gone out of scope
}
```
## WEAK_SELF_IN_NO_ESCAPE_BLOCK
Reported as "Weak Self In No Escape Block" by [self-in-block](checker-self-in-block.md).

@ -11,3 +11,12 @@ Supported languages:
- C/C++/ObjC: Yes
- Java: Yes
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_ALLOCATES_MEMORY](all-issue-types#checkers_allocates_memory)
- [CHECKERS_ANNOTATION_REACHABILITY_ERROR](all-issue-types#checkers_annotation_reachability_error)
- [CHECKERS_CALLS_EXPENSIVE_METHOD](all-issue-types#checkers_calls_expensive_method)
- [CHECKERS_EXPENSIVE_OVERRIDES_UNANNOTATED](all-issue-types#checkers_expensive_overrides_unannotated)

@ -16,11 +16,10 @@ Read more about its foundations in the [Separation Logic and Biabduction page](s
## List of Issue Types
The following issue types are reported by this checker:
- [EMPTY_VECTOR_ACCESS](all-issue-types.md#empty_vector_access)
- [IVAR_NOT_NULL_CHECKED](all-issue-types.md#ivar_not_null_checked)
- [MEMORY_LEAK](all-issue-types.md#memory_leak)
- [NULL_DEREFERENCE](all-issue-types.md#null_dereference)
- [PARAMETER_NOT_NULL_CHECKED](all-issue-types.md#parameter_not_null_checked)
- [PREMATURE_NIL_TERMINATION_ARGUMENT](all-issue-types.md#premature_nil_termination_argument)
- [RESOURCE_LEAK](all-issue-types.md#resource_leak)
- [RETAIN_CYCLE](all-issue-types.md#retain_cycle)
- [EMPTY_VECTOR_ACCESS](all-issue-types#empty_vector_access)
- [IVAR_NOT_NULL_CHECKED](all-issue-types#ivar_not_null_checked)
- [NULL_DEREFERENCE](all-issue-types#null_dereference)
- [PARAMETER_NOT_NULL_CHECKED](all-issue-types#parameter_not_null_checked)
- [PREMATURE_NIL_TERMINATION_ARGUMENT](all-issue-types#premature_nil_termination_argument)
- [RESOURCE_LEAK](all-issue-types#resource_leak)
- [RETAIN_CYCLE](all-issue-types#retain_cycle)

@ -16,3 +16,26 @@ You can read about its origins in this [blog post](https://research.fb.com/infer
## List of Issue Types
The following issue types are reported by this checker:
- [BUFFER_OVERRUN_L1](all-issue-types#buffer_overrun_l1)
- [BUFFER_OVERRUN_L2](all-issue-types#buffer_overrun_l2)
- [BUFFER_OVERRUN_L3](all-issue-types#buffer_overrun_l3)
- [BUFFER_OVERRUN_L4](all-issue-types#buffer_overrun_l4)
- [BUFFER_OVERRUN_L5](all-issue-types#buffer_overrun_l5)
- [BUFFER_OVERRUN_R2](all-issue-types#buffer_overrun_r2)
- [BUFFER_OVERRUN_S2](all-issue-types#buffer_overrun_s2)
- [BUFFER_OVERRUN_T1](all-issue-types#buffer_overrun_t1)
- [BUFFER_OVERRUN_U5](all-issue-types#buffer_overrun_u5)
- [CONDITION_ALWAYS_FALSE](all-issue-types#condition_always_false)
- [CONDITION_ALWAYS_TRUE](all-issue-types#condition_always_true)
- [INFERBO_ALLOC_IS_BIG](all-issue-types#inferbo_alloc_is_big)
- [INFERBO_ALLOC_IS_NEGATIVE](all-issue-types#inferbo_alloc_is_negative)
- [INFERBO_ALLOC_IS_ZERO](all-issue-types#inferbo_alloc_is_zero)
- [INFERBO_ALLOC_MAY_BE_BIG](all-issue-types#inferbo_alloc_may_be_big)
- [INFERBO_ALLOC_MAY_BE_NEGATIVE](all-issue-types#inferbo_alloc_may_be_negative)
- [INFERBO_ALLOC_MAY_BE_TAINTED](all-issue-types#inferbo_alloc_may_be_tainted)
- [INTEGER_OVERFLOW_L1](all-issue-types#integer_overflow_l1)
- [INTEGER_OVERFLOW_L2](all-issue-types#integer_overflow_l2)
- [INTEGER_OVERFLOW_L5](all-issue-types#integer_overflow_l5)
- [INTEGER_OVERFLOW_R2](all-issue-types#integer_overflow_r2)
- [INTEGER_OVERFLOW_U5](all-issue-types#integer_overflow_u5)
- [UNREACHABLE_CODE](all-issue-types#unreachable_code)

@ -1,15 +0,0 @@
---
title: "Class loading analysis"
description: "Compute set of Java classes loaded."
---
Compute set of Java classes loaded.
**\*\*\*DEPRECATED\*\*\*** Unmaintained prototype.
Activate with `--class-loads`.
Supported languages:
- C/C++/ObjC: No
- Java: Yes

@ -11,3 +11,86 @@ Supported languages:
- C/C++/ObjC: Yes
- Java: Yes
Cost analysis statically estimates an upper bound on the worst-case execution cost of a program (WCET). This page gives an overview of how the analysis works for *Java* code. The analyser also has limited support for C/C++ and Objective-C.
To run the analysis, you can use run `infer --cost` (which will run cost analysis along with other
analyses that are run by default) or `infer --cost-only` (which will only run cost analysis).
For example, the command `infer --cost-only -- javac File.java` will run
cost analysis on File.java.
## How the analysis works
Most ideas behind this analysis is based on Stefan Bydge's PhD thesis [Static WCET Analysis based on Abstract Interpretation and Counting of Elements](https://www.semanticscholar.org/paper/Static-WCET-Analysis-Based-on-Abstract-and-Counting-Bygde/ee5157164d497725c1f42dc6c475a59a87c99957).
The analysis computes two things for each node in the CFG:
- the cost of its instructions, i.e. how much one execution of this node costs,
- how many times it can be executed.
The total cost of the node is the scalar product of these two vectors. Then, these are passed to a constraint solver that computes the execution cost of the procedure based on the incoming/outgoing edges.
At a high level, the analysis has three steps:
- Choose control variables that allude to "how many times a loop may iterate".
- Get abstract ranges of the control variables from [InferBO](checker-bufferoverrun) (a numerical analysis that infers symbolic intervals)
- Construct complexity polynomials for loops and functions by via a constraint solving algorithm.
## Examples
Infers cost analysis statically estimates the execution cost of a
program without running the code. For instance, assume that we had the
following program:
```java
void loop(ArrayList<Integer> list){
for (int i = 0; i <= list.size(); i++){
}
}
```
For this program, Infer statically infers a polynomial (e.g. `8|list|+16`) for the execution cost of this program by giving each instruction in Infer's intermediate language a symbolic cost (where `|.|` refers to the length of a list). Here---overlooking the actual constants---the analysis infers that this programs asymptotic complexity is `O(|list|)`, that is loop is linear in the size of its input list. Then, at diff time, if a developer modifies this code to,
```java
void loop(ArrayList<Integer> list){
for (int i = 0; i <= list.size(); i++){
foo(i); // newly added function call
}
}
```
where `foo` has a linear cost in its parameter, then Infer automatically detects that the complexity of loop has increased from `O(|list|)` to `O(|list|^2)` and then reports an [`EXECUTION_TIME_COMPLEXITY_INCREASE`](execution_time_complexity_increase) issue.
Unlike other Infer analyses (which report found issues/bugs when running infer once), cost analysis only reports an issue for differential analysis (i.e. when comparing the analysis results on the original and the modified files). Instead, infer writes the execution cost of the program into `infer-out/costs-report.json` file. For each procedure, `costs-report.json` includes the actual polynomial (for the exection cost) along with the degree of the polynomial, the procedure name, line number etc.
Differential cost analysis in action:
- first run infer's cost analysis on `File.java` and rename `costs-report.json` (which is in `/infer-out`) to `previous-costs-report.json`
- modify the function as shown above
- re-run infer on `File.java` and rename `costs-report.json` to `current-costs-report.json`
- run `infer reportdiff --costs-current current-costs-report.json --costs-previous current-costs-report`.
- Inspect `infer-out/differential/introduced.json` to see the newly found complexity increase issue(s).
## Limitations
There are a number of known limitations to the design of the static cost analysis:
- InferBo's intervals are limited to affine expressions, not full-blown polynomials. Hence, we can automatically infer bounds involving square roots.
- We do not handle recursion.
- If the execution cost of a program depends on an unknown call (e.g. an unmodeled library calls), we can't compute a static upper bound and return T (unknown cost).
## List of Issue Types
The following issue types are reported by this checker:
- [EXECUTION_TIME_COMPLEXITY_INCREASE](all-issue-types#execution_time_complexity_increase)
- [EXECUTION_TIME_COMPLEXITY_INCREASE_UI_THREAD](all-issue-types#execution_time_complexity_increase_ui_thread)
- [EXECUTION_TIME_UNREACHABLE_AT_EXIT](all-issue-types#execution_time_unreachable_at_exit)
- [INFINITE_EXECUTION_TIME](all-issue-types#infinite_execution_time)

@ -91,11 +91,11 @@ class C {
## List of Issue Types
The following issue types are reported by this checker:
- [ERADICATE_CONDITION_REDUNDANT](all-issue-types.md#eradicate_condition_redundant)
- [ERADICATE_FIELD_NOT_INITIALIZED](all-issue-types.md#eradicate_field_not_initialized)
- [ERADICATE_FIELD_NOT_NULLABLE](all-issue-types.md#eradicate_field_not_nullable)
- [ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION](all-issue-types.md#eradicate_inconsistent_subclass_parameter_annotation)
- [ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION](all-issue-types.md#eradicate_inconsistent_subclass_return_annotation)
- [ERADICATE_PARAMETER_NOT_NULLABLE](all-issue-types.md#eradicate_parameter_not_nullable)
- [ERADICATE_RETURN_NOT_NULLABLE](all-issue-types.md#eradicate_return_not_nullable)
- [ERADICATE_RETURN_OVER_ANNOTATED](all-issue-types.md#eradicate_return_over_annotated)
- [ERADICATE_CONDITION_REDUNDANT](all-issue-types#eradicate_condition_redundant)
- [ERADICATE_FIELD_NOT_INITIALIZED](all-issue-types#eradicate_field_not_initialized)
- [ERADICATE_FIELD_NOT_NULLABLE](all-issue-types#eradicate_field_not_nullable)
- [ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION](all-issue-types#eradicate_inconsistent_subclass_parameter_annotation)
- [ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION](all-issue-types#eradicate_inconsistent_subclass_return_annotation)
- [ERADICATE_PARAMETER_NOT_NULLABLE](all-issue-types#eradicate_parameter_not_nullable)
- [ERADICATE_RETURN_NOT_NULLABLE](all-issue-types#eradicate_return_not_nullable)
- [ERADICATE_RETURN_OVER_ANNOTATED](all-issue-types#eradicate_return_over_annotated)

@ -18,4 +18,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_FRAGMENT_RETAINS_VIEW](all-issue-types.md#checkers_fragment_retains_view)
- [CHECKERS_FRAGMENT_RETAINS_VIEW](all-issue-types#checkers_fragment_retains_view)

@ -18,4 +18,4 @@ Casts flagged by this checker are unsafe because calling mutation operations on
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_IMMUTABLE_CAST](all-issue-types.md#checkers_immutable_cast)
- [CHECKERS_IMMUTABLE_CAST](all-issue-types#checkers_immutable_cast)

@ -11,3 +11,9 @@ Supported languages:
- C/C++/ObjC: No
- Java: Yes
## List of Issue Types
The following issue types are reported by this checker:
- [INEFFICIENT_KEYSET_ITERATOR](all-issue-types#inefficient_keyset_iterator)

@ -707,18 +707,18 @@ developing new linters in Infer. Read about them in the [`infer capture` manual]
## List of Issue Types
The following issue types are reported by this checker:
- [ASSIGN_POINTER_WARNING](all-issue-types.md#assign_pointer_warning)
- [BAD_POINTER_COMPARISON](all-issue-types.md#bad_pointer_comparison)
- [COMPONENT_FACTORY_FUNCTION](all-issue-types.md#component_factory_function)
- [COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS](all-issue-types.md#component_initializer_with_side_effects)
- [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](all-issue-types.md#component_with_multiple_factory_methods)
- [COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS](all-issue-types.md#component_with_unconventional_superclass)
- [CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK](all-issue-types.md#cxx_reference_captured_in_objc_block)
- [DIRECT_ATOMIC_PROPERTY_ACCESS](all-issue-types.md#direct_atomic_property_access)
- [DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER](all-issue-types.md#discouraged_weak_property_custom_setter)
- [GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL](all-issue-types.md#global_variable_initialized_with_function_or_method_call)
- [MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE](all-issue-types.md#mutable_local_variable_in_component_file)
- [POINTER_TO_CONST_OBJC_CLASS](all-issue-types.md#pointer_to_const_objc_class)
- [REGISTERED_OBSERVER_BEING_DEALLOCATED](all-issue-types.md#registered_observer_being_deallocated)
- [STRONG_DELEGATE_WARNING](all-issue-types.md#strong_delegate_warning)
- [UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK](all-issue-types.md#unavailable_api_in_supported_ios_sdk)
- [ASSIGN_POINTER_WARNING](all-issue-types#assign_pointer_warning)
- [BAD_POINTER_COMPARISON](all-issue-types#bad_pointer_comparison)
- [COMPONENT_FACTORY_FUNCTION](all-issue-types#component_factory_function)
- [COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS](all-issue-types#component_initializer_with_side_effects)
- [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](all-issue-types#component_with_multiple_factory_methods)
- [COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS](all-issue-types#component_with_unconventional_superclass)
- [CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK](all-issue-types#cxx_reference_captured_in_objc_block)
- [DIRECT_ATOMIC_PROPERTY_ACCESS](all-issue-types#direct_atomic_property_access)
- [DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER](all-issue-types#discouraged_weak_property_custom_setter)
- [GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL](all-issue-types#global_variable_initialized_with_function_or_method_call)
- [MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE](all-issue-types#mutable_local_variable_in_component_file)
- [POINTER_TO_CONST_OBJC_CLASS](all-issue-types#pointer_to_const_objc_class)
- [REGISTERED_OBSERVER_BEING_DEALLOCATED](all-issue-types#registered_observer_being_deallocated)
- [STRONG_DELEGATE_WARNING](all-issue-types#strong_delegate_warning)
- [UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK](all-issue-types#unavailable_api_in_supported_ios_sdk)

@ -16,4 +16,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [DEAD_STORE](all-issue-types.md#dead_store)
- [DEAD_STORE](all-issue-types#dead_store)

@ -13,3 +13,9 @@ Supported languages:
- C/C++/ObjC: No
- Java: Yes
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_PRINTF_ARGS](all-issue-types#checkers_printf_args)

@ -11,3 +11,15 @@ Supported languages:
- C/C++/ObjC: Experimental
- Java: Experimental
## List of Issue Types
The following issue types are reported by this checker:
- [CONSTANT_ADDRESS_DEREFERENCE](all-issue-types#constant_address_dereference)
- [MEMORY_LEAK](all-issue-types#memory_leak)
- [NULLPTR_DEREFERENCE](all-issue-types#nullptr_dereference)
- [STACK_VARIABLE_ADDRESS_ESCAPE](all-issue-types#stack_variable_address_escape)
- [USE_AFTER_DELETE](all-issue-types#use_after_delete)
- [USE_AFTER_FREE](all-issue-types#use_after_free)
- [USE_AFTER_LIFETIME](all-issue-types#use_after_lifetime)

@ -24,3 +24,25 @@ example
## List of Issue Types
The following issue types are reported by this checker:
- [CREATE_INTENT_FROM_URI](all-issue-types#create_intent_from_uri)
- [CROSS_SITE_SCRIPTING](all-issue-types#cross_site_scripting)
- [EXPOSED_INSECURE_INTENT_HANDLING](all-issue-types#exposed_insecure_intent_handling)
- [INSECURE_INTENT_HANDLING](all-issue-types#insecure_intent_handling)
- [JAVASCRIPT_INJECTION](all-issue-types#javascript_injection)
- [LOGGING_PRIVATE_DATA](all-issue-types#logging_private_data)
- [QUANDARY_TAINT_ERROR](all-issue-types#quandary_taint_error)
- [SHELL_INJECTION](all-issue-types#shell_injection)
- [SHELL_INJECTION_RISK](all-issue-types#shell_injection_risk)
- [SQL_INJECTION](all-issue-types#sql_injection)
- [SQL_INJECTION_RISK](all-issue-types#sql_injection_risk)
- [UNTRUSTED_BUFFER_ACCESS](all-issue-types#untrusted_buffer_access)
- [UNTRUSTED_DESERIALIZATION](all-issue-types#untrusted_deserialization)
- [UNTRUSTED_DESERIALIZATION_RISK](all-issue-types#untrusted_deserialization_risk)
- [UNTRUSTED_ENVIRONMENT_CHANGE_RISK](all-issue-types#untrusted_environment_change_risk)
- [UNTRUSTED_FILE](all-issue-types#untrusted_file)
- [UNTRUSTED_FILE_RISK](all-issue-types#untrusted_file_risk)
- [UNTRUSTED_HEAP_ALLOCATION](all-issue-types#untrusted_heap_allocation)
- [UNTRUSTED_INTENT_CREATION](all-issue-types#untrusted_intent_creation)
- [UNTRUSTED_URL_RISK](all-issue-types#untrusted_url_risk)
- [UNTRUSTED_VARIABLE_LENGTH_ARRAY](all-issue-types#untrusted_variable_length_array)
- [USER_CONTROLLED_SQL_RISK](all-issue-types#user_controlled_sql_risk)

@ -505,6 +505,7 @@ resource.
## List of Issue Types
The following issue types are reported by this checker:
- [INTERFACE_NOT_THREAD_SAFE](all-issue-types.md#interface_not_thread_safe)
- [LOCK_CONSISTENCY_VIOLATION](all-issue-types.md#lock_consistency_violation)
- [THREAD_SAFETY_VIOLATION](all-issue-types.md#thread_safety_violation)
- [GUARDEDBY_VIOLATION](all-issue-types#guardedby_violation)
- [INTERFACE_NOT_THREAD_SAFE](all-issue-types#interface_not_thread_safe)
- [LOCK_CONSISTENCY_VIOLATION](all-issue-types#lock_consistency_violation)
- [THREAD_SAFETY_VIOLATION](all-issue-types#thread_safety_violation)

@ -16,8 +16,8 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CAPTURED_STRONG_SELF](all-issue-types.md#captured_strong_self)
- [MIXED_SELF_WEAKSELF](all-issue-types.md#mixed_self_weakself)
- [MULTIPLE_WEAKSELF](all-issue-types.md#multiple_weakself)
- [STRONG_SELF_NOT_CHECKED](all-issue-types.md#strong_self_not_checked)
- [WEAK_SELF_IN_NO_ESCAPE_BLOCK](all-issue-types.md#weak_self_in_no_escape_block)
- [CAPTURED_STRONG_SELF](all-issue-types#captured_strong_self)
- [MIXED_SELF_WEAKSELF](all-issue-types#mixed_self_weakself)
- [MULTIPLE_WEAKSELF](all-issue-types#multiple_weakself)
- [STRONG_SELF_NOT_CHECKED](all-issue-types#strong_self_not_checked)
- [WEAK_SELF_IN_NO_ESCAPE_BLOCK](all-issue-types#weak_self_in_no_escape_block)

@ -16,4 +16,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [STATIC_INITIALIZATION_ORDER_FIASCO](all-issue-types.md#static_initialization_order_fiasco)
- [STATIC_INITIALIZATION_ORDER_FIASCO](all-issue-types#static_initialization_order_fiasco)

@ -21,6 +21,7 @@ Detect several kinds of "starvation" problems:
## List of Issue Types
The following issue types are reported by this checker:
- [DEADLOCK](all-issue-types.md#deadlock)
- [STARVATION](all-issue-types.md#starvation)
- [STRICT_MODE_VIOLATION](all-issue-types.md#strict_mode_violation)
- [DEADLOCK](all-issue-types#deadlock)
- [LOCKLESS_VIOLATION](all-issue-types#lockless_violation)
- [STARVATION](all-issue-types#starvation)
- [STRICT_MODE_VIOLATION](all-issue-types#strict_mode_violation)

@ -11,3 +11,9 @@ Supported languages:
- C/C++/ObjC: Yes
- Java: No
## List of Issue Types
The following issue types are reported by this checker:
- [UNINITIALIZED_VALUE](all-issue-types#uninitialized_value)

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
@ -123,17 +123,21 @@ list of source files from which reactive analysis should
start. Source files should be specified relative to project
root or be absolute</p>
<p style="margin-left:11%;"><b>--class-loads</b></p>
<p style="margin-left:17%;">Activates: checker class-loads:
Compute set of Java classes loaded. (Conversely:
<b>--no-class-loads</b>)</p>
<p style="margin-left:11%;"><b>--config-checks-between-markers</b></p>
<p style="margin-left:11%;"><b>--class-loads-only</b></p>
<p style="margin-left:17%;">Activates: checker
config-checks-between-markers: [EXPERIMENTAL] Collects
config checks between marker start and end. (Conversely:
<b>--no-config-checks-between-markers</b>)</p>
<p style="margin-left:17%;">Activates: Enable class-loads
and disable all other checkers (Conversely:
<b>--no-class-loads-only</b>)</p>
<p style="margin-left:11%;"><b>--config-checks-between-markers-only</b></p>
<p style="margin-left:17%;">Activates: Enable
config-checks-between-markers and disable all other checkers
(Conversely:
<b>--no-config-checks-between-markers-only</b>)</p>
<p style="margin-left:11%;"><b>--continue-analysis</b></p>
@ -441,6 +445,12 @@ pulse will only explore one path. Can be used on
pathologically large procedures to prevent too-big states
from being produced.</p>
<p style="margin-left:11%;"><b>--pulse-model-abort</b>
<i>+string</i></p>
<p style="margin-left:17%;">Methods that should be modelled
as abort in Pulse</p>
<p style="margin-left:11%;"><b>--pulse-model-alloc-pattern</b>
<i>string</i></p>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
@ -175,13 +175,9 @@ Array_of_pointsto (enabled by default), <br>
Assert_failure (enabled by default), <br>
BAD_POINTER_COMPARISON (enabled by default), <br>
BIABDUCTION_ANALYSIS_STOPS (disabled by default), <br>
BIABDUCTION_MEMORY_LEAK (disabled by default), <br>
BIABD_CONDITION_ALWAYS_FALSE (disabled by default), <br>
BIABD_CONDITION_ALWAYS_TRUE (disabled by default), <br>
BIABD_REGISTERED_OBSERVER_BEING_DEALLOCATED (enabled by <br>
default), <br>
BIABD_STACK_VARIABLE_ADDRESS_ESCAPE (disabled by default),
<br>
BIABD_USE_AFTER_FREE (enabled by default), <br>
BUFFER_OVERRUN_L1 (enabled by default), <br>
BUFFER_OVERRUN_L2 (enabled by default), <br>
BUFFER_OVERRUN_L3 (enabled by default), <br>
@ -203,7 +199,6 @@ CHECKERS_FRAGMENT_RETAINS_VIEW (enabled by default), <br>
CHECKERS_IMMUTABLE_CAST (enabled by default), <br>
CHECKERS_PRINTF_ARGS (enabled by default), <br>
CLASS_CAST_EXCEPTION (disabled by default), <br>
CLASS_LOAD (enabled by default), <br>
COMPONENT_FACTORY_FUNCTION (enabled by default), <br>
COMPONENT_FILE_CYCLOMATIC_COMPLEXITY (enabled by default),
<br>
@ -216,6 +211,7 @@ COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS (enabled by
default), <br>
CONDITION_ALWAYS_FALSE (disabled by default), <br>
CONDITION_ALWAYS_TRUE (disabled by default), <br>
CONFIG_CHECKS_BETWEEN_MARKERS (disabled by default), <br>
CONSTANT_ADDRESS_DEREFERENCE (disabled by default), <br>
CREATE_INTENT_FROM_URI (enabled by default), <br>
CROSS_SITE_SCRIPTING (enabled by default), <br>
@ -229,7 +225,6 @@ DEADLOCK (enabled by default), <br>
DEAD_STORE (enabled by default), <br>
DEALLOCATE_STACK_VARIABLE (enabled by default), <br>
DEALLOCATE_STATIC_MEMORY (enabled by default), <br>
DEALLOCATION_MISMATCH (enabled by default), <br>
DIRECT_ATOMIC_PROPERTY_ACCESS (enabled by default), <br>
DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER (enabled by
default), <br>
@ -324,7 +319,6 @@ PRECONDITION_NOT_FOUND (enabled by default), <br>
PRECONDITION_NOT_MET (enabled by default), <br>
PREMATURE_NIL_TERMINATION_ARGUMENT (enabled by default),
<br>
PULSE_MEMORY_LEAK (disabled by default), <br>
PURE_FUNCTION (enabled by default), <br>
QUANDARY_TAINT_ERROR (enabled by default), <br>
REGISTERED_OBSERVER_BEING_DEALLOCATED (enabled by default),

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:13 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:07 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:14 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
@ -180,6 +180,12 @@ undefined, and to <b>pager</b> otherwise.</p>
<p style="margin-left:17%;">Show this manual with all
internal options in the INTERNAL OPTIONS section</p>
<p style="margin-left:11%;"><b>--pmd-xml</b></p>
<p style="margin-left:17%;">Activates: Output issues in
(PMD) XML format in infer-out/report.xml (Conversely:
<b>--no-pmd-xml</b>)</p>
<p style="margin-left:11%;"><b>--print-logs</b></p>
<p style="margin-left:17%;">Activates: Also log messages to

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 11 11:55:08 2020 -->
<!-- CreationDate: Tue Jun 16 10:14:14 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
@ -411,22 +411,6 @@ each analysis has to model.</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1) and <b>infer-capture</b>(1). <b><br>
--class-loads</b></p>
<p style="margin-left:17%;">Activates: checker class-loads:
Compute set of Java classes loaded. (Conversely:
<b>--no-class-loads</b>)</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--class-loads-only</b></p>
<p style="margin-left:17%;">Activates: Enable class-loads
and disable all other checkers (Conversely:
<b>--no-class-loads-only</b>)</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--compilation-database</b> <i>+path</i></p>
<p style="margin-left:17%;">File that contain compilation
@ -451,6 +435,24 @@ component kit file cyclomatic complexity (Conversely:
<p style="margin-left:11%;">See also
<b>infer-capture</b>(1) and <b>infer-run</b>(1). <b><br>
--config-checks-between-markers</b></p>
<p style="margin-left:17%;">Activates: checker
config-checks-between-markers: [EXPERIMENTAL] Collects
config checks between marker start and end. (Conversely:
<b>--no-config-checks-between-markers</b>)</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--config-checks-between-markers-only</b></p>
<p style="margin-left:17%;">Activates: Enable
config-checks-between-markers and disable all other checkers
(Conversely:
<b>--no-config-checks-between-markers-only</b>)</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--continue</b></p>
<p style="margin-left:17%;">Activates: Continue the capture
@ -660,13 +662,9 @@ Array_of_pointsto (enabled by default), <br>
Assert_failure (enabled by default), <br>
BAD_POINTER_COMPARISON (enabled by default), <br>
BIABDUCTION_ANALYSIS_STOPS (disabled by default), <br>
BIABDUCTION_MEMORY_LEAK (disabled by default), <br>
BIABD_CONDITION_ALWAYS_FALSE (disabled by default), <br>
BIABD_CONDITION_ALWAYS_TRUE (disabled by default), <br>
BIABD_REGISTERED_OBSERVER_BEING_DEALLOCATED (enabled by <br>
default), <br>
BIABD_STACK_VARIABLE_ADDRESS_ESCAPE (disabled by default),
<br>
BIABD_USE_AFTER_FREE (enabled by default), <br>
BUFFER_OVERRUN_L1 (enabled by default), <br>
BUFFER_OVERRUN_L2 (enabled by default), <br>
BUFFER_OVERRUN_L3 (enabled by default), <br>
@ -688,7 +686,6 @@ CHECKERS_FRAGMENT_RETAINS_VIEW (enabled by default), <br>
CHECKERS_IMMUTABLE_CAST (enabled by default), <br>
CHECKERS_PRINTF_ARGS (enabled by default), <br>
CLASS_CAST_EXCEPTION (disabled by default), <br>
CLASS_LOAD (enabled by default), <br>
COMPONENT_FACTORY_FUNCTION (enabled by default), <br>
COMPONENT_FILE_CYCLOMATIC_COMPLEXITY (enabled by default),
<br>
@ -701,6 +698,7 @@ COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS (enabled by
default), <br>
CONDITION_ALWAYS_FALSE (disabled by default), <br>
CONDITION_ALWAYS_TRUE (disabled by default), <br>
CONFIG_CHECKS_BETWEEN_MARKERS (disabled by default), <br>
CONSTANT_ADDRESS_DEREFERENCE (disabled by default), <br>
CREATE_INTENT_FROM_URI (enabled by default), <br>
CROSS_SITE_SCRIPTING (enabled by default), <br>
@ -714,7 +712,6 @@ DEADLOCK (enabled by default), <br>
DEAD_STORE (enabled by default), <br>
DEALLOCATE_STACK_VARIABLE (enabled by default), <br>
DEALLOCATE_STATIC_MEMORY (enabled by default), <br>
DEALLOCATION_MISMATCH (enabled by default), <br>
DIRECT_ATOMIC_PROPERTY_ACCESS (enabled by default), <br>
DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER (enabled by
default), <br>
@ -809,7 +806,6 @@ PRECONDITION_NOT_FOUND (enabled by default), <br>
PRECONDITION_NOT_MET (enabled by default), <br>
PREMATURE_NIL_TERMINATION_ARGUMENT (enabled by default),
<br>
PULSE_MEMORY_LEAK (disabled by default), <br>
PURE_FUNCTION (enabled by default), <br>
QUANDARY_TAINT_ERROR (enabled by default), <br>
REGISTERED_OBSERVER_BEING_DEALLOCATED (enabled by default),
@ -1384,6 +1380,14 @@ containing perf profiler data to read</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--pmd-xml</b></p>
<p style="margin-left:17%;">Activates: Output issues in
(PMD) XML format in infer-out/report.xml (Conversely:
<b>--no-pmd-xml</b>)</p>
<p style="margin-left:11%;">See also <b>infer-run</b>(1).
<b><br>
--print-active-checkers</b></p>
<p style="margin-left:17%;">Activates: Print the active
@ -1526,6 +1530,13 @@ pulse will only explore one path. Can be used on
pathologically large procedures to prevent too-big states
from being produced.</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--pulse-model-abort</b> <i>+string</i></p>
<p style="margin-left:17%;">Methods that should be modelled
as abort in Pulse</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--pulse-model-alloc-pattern</b> <i>string</i></p>

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>TopLiftedUtils (infer.Absint.AbstractDomain.TopLiftedUtils)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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">Absint</a> &#x00BB; <a href="../index.html">AbstractDomain</a> &#x00BB; TopLiftedUtils</nav><h1>Module <code>AbstractDomain.TopLiftedUtils</code></h1></header><dl><dt class="spec value" id="val-pp_top"><a href="#val-pp_top" class="anchor"></a><code><span class="keyword">val</span> pp_top : Stdlib.Format.formatter <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>TopLiftedUtils (infer.Absint.AbstractDomain.TopLiftedUtils)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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">Absint</a> &#x00BB; <a href="../index.html">AbstractDomain</a> &#x00BB; TopLiftedUtils</nav><h1>Module <code>AbstractDomain.TopLiftedUtils</code></h1></header><dl><dt class="spec value" id="val-leq"><a href="#val-leq" class="anchor"></a><code><span class="keyword">val</span> leq : <span>leq:<span>(<span>lhs:<span class="type-var">'a</span></span> <span>&#45;&gt;</span> <span>rhs:<span class="type-var">'a</span></span> <span>&#45;&gt;</span> bool)</span></span> <span>&#45;&gt;</span> <span>lhs:<span><span class="type-var">'a</span> <a href="../Types/index.html#type-top_lifted">Types.top_lifted</a></span></span> <span>&#45;&gt;</span> <span>rhs:<span><span class="type-var">'a</span> <a href="../Types/index.html#type-top_lifted">Types.top_lifted</a></span></span> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span>pp:<span>(Stdlib.Format.formatter <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> unit)</span></span> <span>&#45;&gt;</span> Stdlib.Format.formatter <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Types/index.html#type-top_lifted">Types.top_lifted</a></span> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-pp_top"><a href="#val-pp_top" class="anchor"></a><code><span class="keyword">val</span> pp_top : Stdlib.Format.formatter <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>TopLiftedUtils (infer.Absint__AbstractDomain.TopLiftedUtils)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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">Absint__AbstractDomain</a> &#x00BB; TopLiftedUtils</nav><h1>Module <code>Absint__AbstractDomain.TopLiftedUtils</code></h1></header><dl><dt class="spec value" id="val-pp_top"><a href="#val-pp_top" class="anchor"></a><code><span class="keyword">val</span> pp_top : Stdlib.Format.formatter <span>&#45;&gt;</span> unit</code></dt></dl></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>TopLiftedUtils (infer.Absint__AbstractDomain.TopLiftedUtils)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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">Absint__AbstractDomain</a> &#x00BB; TopLiftedUtils</nav><h1>Module <code>Absint__AbstractDomain.TopLiftedUtils</code></h1></header><dl><dt class="spec value" id="val-leq"><a href="#val-leq" class="anchor"></a><code><span class="keyword">val</span> leq : <span>leq:<span>(<span>lhs:<span class="type-var">'a</span></span> <span>&#45;&gt;</span> <span>rhs:<span class="type-var">'a</span></span> <span>&#45;&gt;</span> bool)</span></span> <span>&#45;&gt;</span> <span>lhs:<span><span class="type-var">'a</span> <a href="../Types/index.html#type-top_lifted">Types.top_lifted</a></span></span> <span>&#45;&gt;</span> <span>rhs:<span><span class="type-var">'a</span> <a href="../Types/index.html#type-top_lifted">Types.top_lifted</a></span></span> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span>pp:<span>(Stdlib.Format.formatter <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> unit)</span></span> <span>&#45;&gt;</span> Stdlib.Format.formatter <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Types/index.html#type-top_lifted">Types.top_lifted</a></span> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-pp_top"><a href="#val-pp_top" class="anchor"></a><code><span class="keyword">val</span> pp_top : Stdlib.Format.formatter <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

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

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

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

File diff suppressed because one or more lines are too long

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

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Checkers__ConfigChecksBetweenMarkers (infer.Checkers__ConfigChecksBetweenMarkers)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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__ConfigChecksBetweenMarkers</nav><h1>Module <code>Checkers__ConfigChecksBetweenMarkers</code></h1></header><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__FbGKInteraction (infer.Checkers__FbGKInteraction)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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__FbGKInteraction</nav><h1>Module <code>Checkers__FbGKInteraction</code></h1></header><dl><dt class="spec value" id="val-is_config_class"><a href="#val-is_config_class" class="anchor"></a><code><span class="keyword">val</span> is_config_class : <a href="../IR/Pvar/index.html#type-t">IR.Pvar.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_config_check"><a href="#val-is_config_check" class="anchor"></a><code><span class="keyword">val</span> is_config_check : <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> bool</code></dt><dt class="spec value" id="val-is_marker_start"><a href="#val-is_marker_start" class="anchor"></a><code><span class="keyword">val</span> is_marker_start : <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> bool</code></dt><dt class="spec value" id="val-is_marker_end"><a href="#val-is_marker_end" class="anchor"></a><code><span class="keyword">val</span> is_marker_end : <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> bool</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>CAddImplicitDeallocImpl (infer.ClangFrontend.CAddImplicitDeallocImpl)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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">ClangFrontend</a> &#x00BB; CAddImplicitDeallocImpl</nav><h1>Module <code>ClangFrontend.CAddImplicitDeallocImpl</code></h1></header><dl><dt class="spec value" id="val-process"><a href="#val-process" class="anchor"></a><code><span class="keyword">val</span> process : <a href="../../IR/Cfg/index.html#type-t">IR.Cfg.t</a> <span>&#45;&gt;</span> <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>This models ARC implementation of dealloc, see https://clang.llvm.org/docs/AutomaticReferenceCounting.html#dealloc. Dealloc methods can be added to ObjC classes to free C memory for example, but the deallocation of the ObjC instance variables of the object is done automatically. So here we add this explicitely to Infer: we add calls to dealloc of the ObjC instance variables. Here we assume that every ObjC class has already a dealloc method, because if it doesn't exist we add an empty method in CFrontend_decl.create_and_process_dealloc_objc_impl TODO(T68411500): add calls to dealloc of the superclass.</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

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ClangFrontend__CAddImplicitDeallocImpl (infer.ClangFrontend__CAddImplicitDeallocImpl)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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; ClangFrontend__CAddImplicitDeallocImpl</nav><h1>Module <code>ClangFrontend__CAddImplicitDeallocImpl</code></h1></header><dl><dt class="spec value" id="val-process"><a href="#val-process" class="anchor"></a><code><span class="keyword">val</span> process : <a href="../IR/Cfg/index.html#type-t">IR.Cfg.t</a> <span>&#45;&gt;</span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>This models ARC implementation of dealloc, see https://clang.llvm.org/docs/AutomaticReferenceCounting.html#dealloc. Dealloc methods can be added to ObjC classes to free C memory for example, but the deallocation of the ObjC instance variables of the object is done automatically. So here we add this explicitely to Infer: we add calls to dealloc of the ObjC instance variables. Here we assume that every ObjC class has already a dealloc method, because if it doesn't exist we add an empty method in CFrontend_decl.create_and_process_dealloc_objc_impl TODO(T68411500): add calls to dealloc of the superclass.</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

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

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Help (infer.Integration.Help)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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; Help</nav><h1>Module <code>Integration.Help</code></h1></header><dl><dt class="spec value" id="val-list_checkers"><a href="#val-list_checkers" class="anchor"></a><code><span class="keyword">val</span> list_checkers : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all checkers</p></dd></dl><dl><dt class="spec value" id="val-list_issue_types"><a href="#val-list_issue_types" class="anchor"></a><code><span class="keyword">val</span> list_issue_types : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all known issue types</p></dd></dl><dl><dt class="spec value" id="val-show_checkers"><a href="#val-show_checkers" class="anchor"></a><code><span class="keyword">val</span> show_checkers : <span><a href="../../IBase/Checker/index.html#type-t">IBase.Checker.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given checkers</p></dd></dl><dl><dt class="spec value" id="val-show_issue_types"><a href="#val-show_issue_types" class="anchor"></a><code><span class="keyword">val</span> show_issue_types : <span><a href="../../IBase/IssueType/index.html#type-t">IBase.IssueType.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given issue_types</p></dd></dl><dl><dt class="spec value" id="val-write_website"><a href="#val-write_website" class="anchor"></a><code><span class="keyword">val</span> write_website : <span>website_root:string</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>generate files for the fbinfer.com website</p></dd></dl></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Help (infer.Integration.Help)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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; Help</nav><h1>Module <code>Integration.Help</code></h1></header><dl><dt class="spec value" id="val-list_checkers"><a href="#val-list_checkers" class="anchor"></a><code><span class="keyword">val</span> list_checkers : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all checkers</p></dd></dl><dl><dt class="spec value" id="val-list_issue_types"><a href="#val-list_issue_types" class="anchor"></a><code><span class="keyword">val</span> list_issue_types : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all known issue types</p></dd></dl><dl><dt class="spec value" id="val-show_checkers"><a href="#val-show_checkers" class="anchor"></a><code><span class="keyword">val</span> show_checkers : <span><a href="../../IBase/Checker/index.html#type-t">IBase.Checker.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given checkers</p></dd></dl><dl><dt class="spec value" id="val-show_issue_types"><a href="#val-show_issue_types" class="anchor"></a><code><span class="keyword">val</span> show_issue_types : <span><a href="../../IBase/IssueType/index.html#type-t">IBase.IssueType.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given issue_types</p></dd></dl><dl><dt class="spec value" id="val-write_website"><a href="#val-write_website" class="anchor"></a><code><span class="keyword">val</span> write_website : <span>website_root:string</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>generate files for the fbinfer.com website</p></dd></dl><dl><dt class="spec value" id="val-url_fragment_of_issue_type"><a href="#val-url_fragment_of_issue_type" class="anchor"></a><code><span class="keyword">val</span> url_fragment_of_issue_type : string <span>&#45;&gt;</span> string</code></dt><dd><p>given an issue type unique ID, return the URL fragment relative to the website documentation, e.g. <code>url_fragment_of_issue_type &quot;NULL_DEREFERENCE&quot;</code> is <code>&quot;all-issue-types#null_dereference&quot;</code></p></dd></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>XMLReport (infer.Integration.XMLReport)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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; XMLReport</nav><h1>Module <code>Integration.XMLReport</code></h1></header><dl><dt class="spec value" id="val-write"><a href="#val-write" class="anchor"></a><code><span class="keyword">val</span> write : <span>xml_path:string</span> <span>&#45;&gt;</span> <span>json_path:string</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>read the JSON report at <code>json_path</code> and translates it to a PMD-style XML report in <code>xml_path</code></p></dd></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__Help (infer.Integration__Help)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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__Help</nav><h1>Module <code>Integration__Help</code></h1></header><dl><dt class="spec value" id="val-list_checkers"><a href="#val-list_checkers" class="anchor"></a><code><span class="keyword">val</span> list_checkers : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all checkers</p></dd></dl><dl><dt class="spec value" id="val-list_issue_types"><a href="#val-list_issue_types" class="anchor"></a><code><span class="keyword">val</span> list_issue_types : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all known issue types</p></dd></dl><dl><dt class="spec value" id="val-show_checkers"><a href="#val-show_checkers" class="anchor"></a><code><span class="keyword">val</span> show_checkers : <span><a href="../IBase/Checker/index.html#type-t">IBase.Checker.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given checkers</p></dd></dl><dl><dt class="spec value" id="val-show_issue_types"><a href="#val-show_issue_types" class="anchor"></a><code><span class="keyword">val</span> show_issue_types : <span><a href="../IBase/IssueType/index.html#type-t">IBase.IssueType.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given issue_types</p></dd></dl><dl><dt class="spec value" id="val-write_website"><a href="#val-write_website" class="anchor"></a><code><span class="keyword">val</span> write_website : <span>website_root:string</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>generate files for the fbinfer.com website</p></dd></dl></div></body></html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__Help (infer.Integration__Help)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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__Help</nav><h1>Module <code>Integration__Help</code></h1></header><dl><dt class="spec value" id="val-list_checkers"><a href="#val-list_checkers" class="anchor"></a><code><span class="keyword">val</span> list_checkers : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all checkers</p></dd></dl><dl><dt class="spec value" id="val-list_issue_types"><a href="#val-list_issue_types" class="anchor"></a><code><span class="keyword">val</span> list_issue_types : unit <span>&#45;&gt;</span> unit</code></dt><dd><p>print the list of all known issue types</p></dd></dl><dl><dt class="spec value" id="val-show_checkers"><a href="#val-show_checkers" class="anchor"></a><code><span class="keyword">val</span> show_checkers : <span><a href="../IBase/Checker/index.html#type-t">IBase.Checker.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given checkers</p></dd></dl><dl><dt class="spec value" id="val-show_issue_types"><a href="#val-show_issue_types" class="anchor"></a><code><span class="keyword">val</span> show_issue_types : <span><a href="../IBase/IssueType/index.html#type-t">IBase.IssueType.t</a> list</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>show information about the given issue_types</p></dd></dl><dl><dt class="spec value" id="val-write_website"><a href="#val-write_website" class="anchor"></a><code><span class="keyword">val</span> write_website : <span>website_root:string</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>generate files for the fbinfer.com website</p></dd></dl><dl><dt class="spec value" id="val-url_fragment_of_issue_type"><a href="#val-url_fragment_of_issue_type" class="anchor"></a><code><span class="keyword">val</span> url_fragment_of_issue_type : string <span>&#45;&gt;</span> string</code></dt><dd><p>given an issue type unique ID, return the URL fragment relative to the website documentation, e.g. <code>url_fragment_of_issue_type &quot;NULL_DEREFERENCE&quot;</code> is <code>&quot;all-issue-types#null_dereference&quot;</code></p></dd></dl></div></body></html>

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Integration__XMLReport (infer.Integration__XMLReport)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><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__XMLReport</nav><h1>Module <code>Integration__XMLReport</code></h1></header><dl><dt class="spec value" id="val-write"><a href="#val-write" class="anchor"></a><code><span class="keyword">val</span> write : <span>xml_path:string</span> <span>&#45;&gt;</span> <span>json_path:string</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>read the JSON report at <code>json_path</code> and translates it to a PMD-style XML report in <code>xml_path</code></p></dd></dl></div></body></html>
Loading…
Cancel
Save