[website] version all internal links

Summary:
The internal links for the "old latest" 1.0.0 version were wrong. The
fix to `make new-website-version` is in the next diff.

Reviewed By: martintrojer

Differential Revision: D27360089

fbshipit-source-id: 8abefbd8f
master
Jules Villard 4 years ago committed by Facebook GitHub Bot
parent eed1f3e180
commit b83bd1b5f7

@ -84,7 +84,7 @@ in
(search for "Liveness").
you can then run `infer run --liveness-only -- <your_build_command>` to run your
checker on real code. See [here](/docs/analyzing-apps-or-projects) for more
checker on real code. See [here](/docs/next/analyzing-apps-or-projects) for more
details on the build systems supported by Infer.
Other examples of simple intraprocedural checkers are

@ -43,7 +43,7 @@ infer run -- xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld
### "infer [options] -- \<build command\>" fails during a linking step
The linker will sometimes not work if files have been compiled using a different
compiler, such as the one Infer uses [under the hood](/docs/infer-workflow) to
compiler, such as the one Infer uses [under the hood](/docs/next/infer-workflow) to
analyze your files.
A workaround consists in setting the `LD` environment variable to a dummy

@ -84,7 +84,7 @@ in
(search for "Liveness").
you can then run `infer run --liveness-only -- <your_build_command>` to run your
checker on real code. See [here](/docs/analyzing-apps-or-projects) for more
checker on real code. See [here](/docs/1.0.0/analyzing-apps-or-projects) for more
details on the build systems supported by Infer.
Other examples of simple intraprocedural checkers are

@ -7,7 +7,7 @@ Here is an overview of the issue types currently reported by Infer.
## ASSIGN_POINTER_WARNING
Reported as "Assign Pointer Warning" by [linters](/docs/checker-linters).
Reported as "Assign Pointer Warning" by [linters](/docs/1.0.0/checker-linters).
This check fires when a pointer to an Obj-C object is tagged with an `assign`
property (similar to the `-Warc-unsafe-retained-assign` compiler flag). Not
@ -16,7 +16,7 @@ and use a dangling pointer.
## AUTORELEASEPOOL_SIZE_COMPLEXITY_INCREASE
Reported as "Autoreleasepool Size Complexity Increase" by [cost](/docs/checker-cost).
Reported as "Autoreleasepool Size Complexity Increase" by [cost](/docs/1.0.0/checker-cost).
\[EXPERIMENTAL\] Infer reports this issue when the ObjC autoreleasepool's size complexity of a
program increases in degree: e.g. from constant to linear or from logarithmic to quadratic. This
@ -25,7 +25,7 @@ two runs of infer on a file.
## AUTORELEASEPOOL_SIZE_COMPLEXITY_INCREASE_UI_THREAD
Reported as "Autoreleasepool Size Complexity Increase Ui Thread" by [cost](/docs/checker-cost).
Reported as "Autoreleasepool Size Complexity Increase Ui Thread" by [cost](/docs/1.0.0/checker-cost).
\[EXPERIMENTAL\] Infer reports this issue when the ObjC autoreleasepool's complexity of the
procedure increases in degree **and** the procedure runs on the UI (main) thread.
@ -38,14 +38,14 @@ Infer considers a method as running on the UI thread whenever:
## AUTORELEASEPOOL_SIZE_UNREACHABLE_AT_EXIT
Reported as "Autoreleasepool Size Unreachable At Exit" by [cost](/docs/checker-cost).
Reported as "Autoreleasepool Size Unreachable At Exit" by [cost](/docs/1.0.0/checker-cost).
\[EXPERIMENTAL\] This issue type indicates that the program's execution doesn't reach the exit
node. Hence, we cannot compute a static bound of ObjC autoreleasepool's size for the procedure.
## BAD_POINTER_COMPARISON
Reported as "Bad Pointer Comparison" by [linters](/docs/checker-linters).
Reported as "Bad Pointer Comparison" by [linters](/docs/1.0.0/checker-linters).
Infer reports these warnings in Objective-C when a boxed primitive type such as
`NSNumber *` is coerced to a boolean in a comparison. For example, consider the
@ -64,12 +64,12 @@ compare `n` to `nil` or call an accessor to clarify her intention.
## BIABDUCTION_MEMORY_LEAK
Reported as "Memory Leak" by [biabduction](/docs/checker-biabduction).
Reported as "Memory Leak" by [biabduction](/docs/1.0.0/checker-biabduction).
See [MEMORY_LEAK](#memory_leak).
## BUFFER_OVERRUN_L1
Reported as "Buffer Overrun L1" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun L1" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
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.
@ -97,37 +97,37 @@ report. The higher the number, the more likely it is to be a false positive.
## BUFFER_OVERRUN_L2
Reported as "Buffer Overrun L2" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun L2" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_L3
Reported as "Buffer Overrun L3" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun L3" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_L4
Reported as "Buffer Overrun L4" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun L4" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_L5
Reported as "Buffer Overrun L5" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun L5" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_S2
Reported as "Buffer Overrun S2" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun S2" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_U5
Reported as "Buffer Overrun U5" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Buffer Overrun U5" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## CAPTURED_STRONG_SELF
Reported as "Captured strongSelf" by [self-in-block](/docs/checker-self-in-block).
Reported as "Captured strongSelf" by [self-in-block](/docs/1.0.0/checker-self-in-block).
This will happen in one of two cases generally:
@ -140,7 +140,7 @@ This will happen in one of two cases generally:
## CHECKERS_ALLOCATES_MEMORY
Reported as "Allocates Memory" by [annotation-reachability](/docs/checker-annotation-reachability).
Reported as "Allocates Memory" by [annotation-reachability](/docs/1.0.0/checker-annotation-reachability).
A method annotated with `@NoAllocation` transitively calls `new`.
@ -157,13 +157,13 @@ class C implements I {
## CHECKERS_ANNOTATION_REACHABILITY_ERROR
Reported as "Annotation Reachability Error" by [annotation-reachability](/docs/checker-annotation-reachability).
Reported as "Annotation Reachability Error" by [annotation-reachability](/docs/1.0.0/checker-annotation-reachability).
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](/docs/checker-annotation-reachability).
Reported as "Expensive Method Called" by [annotation-reachability](/docs/1.0.0/checker-annotation-reachability).
A method annotated with `@PerformanceCritical` transitively calls a method annotated `@Expensive`.
@ -183,7 +183,7 @@ class C {
## CHECKERS_EXPENSIVE_OVERRIDES_UNANNOTATED
Reported as "Expensive Overrides Unannotated" by [annotation-reachability](/docs/checker-annotation-reachability).
Reported as "Expensive Overrides Unannotated" by [annotation-reachability](/docs/1.0.0/checker-annotation-reachability).
A method annotated with `@Expensive` overrides an un-annotated method.
@ -202,7 +202,7 @@ class A implements I {
## CHECKERS_FRAGMENT_RETAINS_VIEW
Reported as "Fragment Retains View" by [fragment-retains-view](/docs/checker-fragment-retains-view).
Reported as "Fragment Retains View" by [fragment-retains-view](/docs/1.0.0/checker-fragment-retains-view).
This error type is Android-specific. It fires when a `Fragment` type fails to
nullify one or more of its declared `View` fields in `onDestroyView`. In
@ -216,7 +216,7 @@ Action: Nullify the `View` in question in `onDestroyView`.
## CHECKERS_IMMUTABLE_CAST
Reported as "Checkers Immutable Cast" by [immutable-cast](/docs/checker-immutable-cast).
Reported as "Checkers Immutable Cast" by [immutable-cast](/docs/1.0.0/checker-immutable-cast).
This error type is reported in Java. It fires when an immutable collection is
returned from a method whose type is mutable.
@ -236,7 +236,7 @@ collection so that it can be modified.
## CHECKERS_PRINTF_ARGS
Reported as "Checkers Printf Args" by [printf-args](/docs/checker-printf-args).
Reported as "Checkers Printf Args" by [printf-args](/docs/1.0.0/checker-printf-args).
This error is reported when the argument types to a `printf` method do not match the format string.
@ -250,27 +250,27 @@ Action: fix the mismatch between format string and argument types.
## COMPONENT_WITH_MULTIPLE_FACTORY_METHODS
Reported as "Component With Multiple Factory Methods" by [linters](/docs/checker-linters).
Reported as "Component With Multiple Factory Methods" by [linters](/docs/1.0.0/checker-linters).
## CONDITION_ALWAYS_FALSE
Reported as "Condition Always False" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Condition Always False" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
A condition expression is **always** evaluated to false.
## CONDITION_ALWAYS_TRUE
Reported as "Condition Always True" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Condition Always True" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
A condition expression is **always** evaluated to true.
## CONFIG_CHECKS_BETWEEN_MARKERS
Reported as "Config Checks Between Markers" by [config-checks-between-markers](/docs/checker-config-checks-between-markers).
Reported as "Config Checks Between Markers" by [config-checks-between-markers](/docs/1.0.0/checker-config-checks-between-markers).
A config checking is done between a marker's start and end
## CONSTANT_ADDRESS_DEREFERENCE
Reported as "Constant Address Dereference" by [pulse](/docs/checker-pulse).
Reported as "Constant Address Dereference" by [pulse](/docs/1.0.0/checker-pulse).
This is reported when an address obtained via a non-zero constant is
dereferenced. If the address is zero then
@ -281,17 +281,17 @@ type.
## CREATE_INTENT_FROM_URI
Reported as "Create Intent From Uri" by [quandary](/docs/checker-quandary).
Reported as "Create Intent From Uri" by [quandary](/docs/1.0.0/checker-quandary).
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](/docs/checker-quandary).
Reported as "Cross Site Scripting" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted data flows into HTML; XSS risk.
## CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK
Reported as "Cxx Reference Captured In Objc Block" by [linters](/docs/checker-linters).
Reported as "Cxx Reference Captured In Objc Block" by [linters](/docs/1.0.0/checker-linters).
With this check, Infer detects C++ references captured in a block. Doing this is
almost always wrong. The reason is that C++ references are not managed pointers
@ -310,12 +310,12 @@ const int copied_v = v;
## DANGLING_POINTER_DEREFERENCE
Reported as "Dangling Pointer Dereference" by [biabduction](/docs/checker-biabduction).
Reported as "Dangling Pointer Dereference" by [biabduction](/docs/1.0.0/checker-biabduction).
## DEADLOCK
Reported as "Deadlock" by [starvation](/docs/checker-starvation).
Reported as "Deadlock" by [starvation](/docs/1.0.0/checker-starvation).
This error is currently reported in Java. A deadlock occurs when two distinct
threads try to acquire two locks in reverse orders. The following code
@ -380,14 +380,14 @@ To suppress reports of deadlocks in a method `m()` use the
## DEAD_STORE
Reported as "Dead Store" by [liveness](/docs/checker-liveness).
Reported as "Dead Store" by [liveness](/docs/1.0.0/checker-liveness).
This error is reported in C++. It fires when the value assigned to a variables
is never used (e.g., `int i = 1; i = 2; return i;`).
## DIRECT_ATOMIC_PROPERTY_ACCESS
Reported as "Direct Atomic Property Access" by [linters](/docs/checker-linters).
Reported as "Direct Atomic Property Access" by [linters](/docs/1.0.0/checker-linters).
This check warns you when you are accessing an atomic property directly with an
ivar. This makes the atomic property not atomic anymore. So potentially you may
@ -397,7 +397,7 @@ To fix the problem you need to access properties with their getter or setter.
## DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER
Reported as "Discouraged Weak Property Custom Setter" by [linters](/docs/checker-linters).
Reported as "Discouraged Weak Property Custom Setter" by [linters](/docs/1.0.0/checker-linters).
This check warns you when you have a custom setter for a weak property. When
compiled with Automatic Reference Counting (ARC, `-fobj-arc`) ARC may set the
@ -466,12 +466,12 @@ Note that the custom setter was only invoked once.
## DIVIDE_BY_ZERO
Reported as "Divide By Zero" by [biabduction](/docs/checker-biabduction).
Reported as "Divide By Zero" by [biabduction](/docs/1.0.0/checker-biabduction).
## EMPTY_VECTOR_ACCESS
Reported as "Empty Vector Access" by [biabduction](/docs/checker-biabduction).
Reported as "Empty Vector Access" by [biabduction](/docs/1.0.0/checker-biabduction).
This error type is reported only in C++, in versions >= C++11.
@ -488,12 +488,12 @@ int foo(){
## ERADICATE_BAD_NESTED_CLASS_ANNOTATION
Reported as "@Nullsafe annotation is inconsistent with outer class" by [eradicate](/docs/checker-eradicate).
Reported as "@Nullsafe annotation is inconsistent with outer class" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_CONDITION_REDUNDANT
Reported as "Condition Redundant" by [eradicate](/docs/checker-eradicate).
Reported as "Condition Redundant" by [eradicate](/docs/1.0.0/checker-eradicate).
This report is inactive by default. Condition (x != null) or (x == null) when x
cannot be null: the first condition is always true and the second is always
@ -520,7 +520,7 @@ relevant. If the annotations are correct, you can remove the redundant case.
## ERADICATE_FIELD_NOT_INITIALIZED
Reported as "Field Not Initialized" by [eradicate](/docs/checker-eradicate).
Reported as "Field Not Initialized" by [eradicate](/docs/1.0.0/checker-eradicate).
The constructor does not initialize a field f which is not annotated with
@Nullable
@ -542,7 +542,7 @@ annotated with @Nullable.
## ERADICATE_FIELD_NOT_NULLABLE
Reported as "Field Not Nullable" by [eradicate](/docs/checker-eradicate).
Reported as "Field Not Nullable" by [eradicate](/docs/1.0.0/checker-eradicate).
An assignment x.f = v where v could be null and field f is not annotated with
@Nullable.
@ -567,12 +567,12 @@ values.
## ERADICATE_FIELD_OVER_ANNOTATED
Reported as "Field Over Annotated" by [eradicate](/docs/checker-eradicate).
Reported as "Field Over Annotated" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION
Reported as "Inconsistent Subclass Parameter Annotation" by [eradicate](/docs/checker-eradicate).
Reported as "Inconsistent Subclass Parameter Annotation" by [eradicate](/docs/1.0.0/checker-eradicate).
A parameter of the overridden method is missing a @Nullable annotation present in the superclass.
@ -617,7 +617,7 @@ public class Main {
## ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION
Reported as "Inconsistent Subclass Return Annotation" by [eradicate](/docs/checker-eradicate).
Reported as "Inconsistent Subclass Return Annotation" by [eradicate](/docs/1.0.0/checker-eradicate).
The return type of the overridden method is annotated @Nullable, but the
corresponding method in the superclass is not.
@ -661,17 +661,17 @@ class Main {
## ERADICATE_META_CLASS_CAN_BE_NULLSAFE
Reported as "Class has 0 issues and can be marked @Nullsafe" by [eradicate](/docs/checker-eradicate).
Reported as "Class has 0 issues and can be marked @Nullsafe" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_META_CLASS_IS_NULLSAFE
Reported as "Class is marked @Nullsafe and has 0 issues" by [eradicate](/docs/checker-eradicate).
Reported as "Class is marked @Nullsafe and has 0 issues" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_META_CLASS_NEEDS_IMPROVEMENT
Reported as "Class needs improvement to become @Nullsafe" by [eradicate](/docs/checker-eradicate).
Reported as "Class needs improvement to become @Nullsafe" by [eradicate](/docs/1.0.0/checker-eradicate).
Reported when the class either:
- has at least one nullability issue, or
@ -679,12 +679,12 @@ Reported when the class either:
## ERADICATE_NULLABLE_DEREFERENCE
Reported as "Nullable Dereference" by [eradicate](/docs/checker-eradicate).
Reported as "Nullable Dereference" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_PARAMETER_NOT_NULLABLE
Reported as "Parameter Not Nullable" by [eradicate](/docs/checker-eradicate).
Reported as "Parameter Not Nullable" by [eradicate](/docs/1.0.0/checker-eradicate).
Method call x.m(..., v, ...) where v can be null and the corresponding parameter
in method m is not annotated with @Nullable
@ -711,12 +711,12 @@ of method m, as that code must now deal with null values.
## ERADICATE_REDUNDANT_NESTED_CLASS_ANNOTATION
Reported as "@Nullsafe annotation is redundant" by [eradicate](/docs/checker-eradicate).
Reported as "@Nullsafe annotation is redundant" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_RETURN_NOT_NULLABLE
Reported as "Return Not Nullable" by [eradicate](/docs/checker-eradicate).
Reported as "Return Not Nullable" by [eradicate](/docs/1.0.0/checker-eradicate).
Method m can return null, but the method's return type is not annotated with
@Nullable
@ -739,7 +739,7 @@ deal with null values.
## ERADICATE_RETURN_OVER_ANNOTATED
Reported as "Return Over Annotated" by [eradicate](/docs/checker-eradicate).
Reported as "Return Over Annotated" by [eradicate](/docs/1.0.0/checker-eradicate).
This report is inactive by default. Method m is annotated with @Nullable but the
method cannot return null
@ -764,17 +764,17 @@ annotation.
## ERADICATE_UNCHECKED_USAGE_IN_NULLSAFE
Reported as "Nullsafe mode: unchecked usage of a value" by [eradicate](/docs/checker-eradicate).
Reported as "Nullsafe mode: unchecked usage of a value" by [eradicate](/docs/1.0.0/checker-eradicate).
## ERADICATE_UNVETTED_THIRD_PARTY_IN_NULLSAFE
Reported as "Nullsafe mode: unchecked usage of unvetted third-party" by [eradicate](/docs/checker-eradicate).
Reported as "Nullsafe mode: unchecked usage of unvetted third-party" by [eradicate](/docs/1.0.0/checker-eradicate).
## EXECUTION_TIME_COMPLEXITY_INCREASE
Reported as "Execution Time Complexity Increase" by [cost](/docs/checker-cost).
Reported as "Execution Time Complexity Increase" by [cost](/docs/1.0.0/checker-cost).
Infer reports this issue when the execution time complexity of a
program increases in degree: e.g. from constant to linear or from
@ -786,7 +786,7 @@ two runs of infer on a file.
## EXECUTION_TIME_COMPLEXITY_INCREASE_UI_THREAD
Reported as "Execution Time Complexity Increase Ui Thread" by [cost](/docs/checker-cost).
Reported as "Execution Time Complexity Increase Ui Thread" by [cost](/docs/1.0.0/checker-cost).
Infer reports this issue when the execution time complexity of the procedure increases in degree **and** the procedure runs on the UI (main) thread.
@ -802,7 +802,7 @@ Infer considers a method as running on the UI thread whenever:
## EXECUTION_TIME_UNREACHABLE_AT_EXIT
Reported as "Execution Time Unreachable At Exit" by [cost](/docs/checker-cost).
Reported as "Execution Time Unreachable At Exit" by [cost](/docs/1.0.0/checker-cost).
This issue type indicates that the program's execution doesn't reach
the exit node. Hence, we cannot compute a static bound for the
@ -823,9 +823,9 @@ void infeasible_path_unreachable() {
## EXPENSIVE_LOOP_INVARIANT_CALL
Reported as "Expensive Loop Invariant Call" by [loop-hoisting](/docs/checker-loop-hoisting).
Reported as "Expensive Loop Invariant Call" by [loop-hoisting](/docs/1.0.0/checker-loop-hoisting).
We report this issue type when a function is [loop-invariant](/docs/all-issue-types#invariant_call) and also expensive (i.e. at least has linear complexity as determined by the [cost](/docs/checker-cost) analysis).
We report this issue type when a function is [loop-invariant](/docs/1.0.0/all-issue-types#invariant_call) and also expensive (i.e. at least has linear complexity as determined by the [cost](/docs/1.0.0/checker-cost) analysis).
```java
int incr(int x) {
@ -850,12 +850,12 @@ void symbolic_expensive_hoist(int size) {
## EXPOSED_INSECURE_INTENT_HANDLING
Reported as "Exposed Insecure Intent Handling" by [quandary](/docs/checker-quandary).
Reported as "Exposed Insecure Intent Handling" by [quandary](/docs/1.0.0/checker-quandary).
Undocumented.
## GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL
Reported as "Global Variable Initialized With Function Or Method Call" by [linters](/docs/checker-linters).
Reported as "Global Variable Initialized With Function Or Method Call" by [linters](/docs/1.0.0/checker-linters).
This checker warns you when the initialization of global variable contain a
method or function call. The warning wants to make you aware that some functions
@ -864,7 +864,7 @@ these initializations can slow down the start-up time of an app.
## GUARDEDBY_VIOLATION
Reported as "GuardedBy Violation" by [racerd](/docs/checker-racerd).
Reported as "GuardedBy Violation" by [racerd](/docs/1.0.0/checker-racerd).
A field annotated with `@GuardedBy` is being accessed by a call-chain that starts at a non-private method without synchronization.
@ -885,7 +885,7 @@ Action: Protect the offending access by acquiring the lock indicated by the `@Gu
## IMPURE_FUNCTION
Reported as "Impure Function" by [impurity](/docs/checker-impurity).
Reported as "Impure Function" by [impurity](/docs/1.0.0/checker-impurity).
This issue type indicates impure functions. For instance, below functions would be marked as impure:
```java
@ -900,7 +900,7 @@ void makeAllZero_impure(ArrayList<Foo> list) {
## INEFFICIENT_KEYSET_ITERATOR
Reported as "Inefficient Keyset Iterator" by [inefficient-keyset-iterator](/docs/checker-inefficient-keyset-iterator).
Reported as "Inefficient Keyset Iterator" by [inefficient-keyset-iterator](/docs/1.0.0/checker-inefficient-keyset-iterator).
This issue is raised when
- iterating over a HashMap with `ketSet()` iterator
@ -931,39 +931,39 @@ void efficient_loop_ok(HashMap<String, Integer> testMap) {
## INFERBO_ALLOC_IS_BIG
Reported as "Inferbo Alloc Is Big" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Inferbo Alloc Is Big" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
`malloc` is passed a large constant value.
## INFERBO_ALLOC_IS_NEGATIVE
Reported as "Inferbo Alloc Is Negative" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Inferbo Alloc Is Negative" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
`malloc` is called with a negative size.
## INFERBO_ALLOC_IS_ZERO
Reported as "Inferbo Alloc Is Zero" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Inferbo Alloc Is Zero" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
`malloc` is called with a zero size.
## INFERBO_ALLOC_MAY_BE_BIG
Reported as "Inferbo Alloc May Be Big" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Inferbo Alloc May Be Big" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
`malloc` *may* be called with a large value.
## INFERBO_ALLOC_MAY_BE_NEGATIVE
Reported as "Inferbo Alloc May Be Negative" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Inferbo Alloc May Be Negative" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
`malloc` *may* be called with a negative value.
## INFINITE_AUTORELEASEPOOL_SIZE
Reported as "Infinite Autoreleasepool Size" by [cost](/docs/checker-cost).
Reported as "Infinite Autoreleasepool Size" by [cost](/docs/1.0.0/checker-cost).
\[EXPERIMENTAL\] This warning indicates that Infer was not able to determine a static upper bound on
the ObjC autoreleasepool's size in the procedure. By default, this issue type is disabled.
## INFINITE_EXECUTION_TIME
Reported as "Infinite Execution Time" by [cost](/docs/checker-cost).
Reported as "Infinite Execution Time" by [cost](/docs/1.0.0/checker-cost).
This warning indicates that Infer was not able to determine a static
upper bound on the execution cost of the procedure. By default, this
@ -987,12 +987,12 @@ Consequently, we report an `INFINITE_EXECUTION_TIME`, corresponding to the bigge
## INSECURE_INTENT_HANDLING
Reported as "Insecure Intent Handling" by [quandary](/docs/checker-quandary).
Reported as "Insecure Intent Handling" by [quandary](/docs/1.0.0/checker-quandary).
Undocumented.
## INTEGER_OVERFLOW_L1
Reported as "Integer Overflow L1" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Integer Overflow L1" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
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.
@ -1011,33 +1011,33 @@ report. The higher the number, the more likely it is to be a false positive.
## INTEGER_OVERFLOW_L2
Reported as "Integer Overflow L2" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Integer Overflow L2" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_L5
Reported as "Integer Overflow L5" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Integer Overflow L5" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_U5
Reported as "Integer Overflow U5" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Integer Overflow U5" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTERFACE_NOT_THREAD_SAFE
Reported as "Interface Not Thread Safe" by [racerd](/docs/checker-racerd).
Reported as "Interface Not Thread Safe" by [racerd](/docs/1.0.0/checker-racerd).
This error indicates that you have invoked an interface method not annotated
with `@ThreadSafe` from a thread-safe context (e.g., code that uses locks or is
marked `@ThreadSafe`). The fix is to add the `@ThreadSafe` annotation to the
interface or to the interface method. For background on why these annotations
are needed, see the detailed explanation
[here](/docs/checker-racerd#interface-not-thread-safe).
[here](/docs/1.0.0/checker-racerd#interface-not-thread-safe).
## INVARIANT_CALL
Reported as "Invariant Call" by [loop-hoisting](/docs/checker-loop-hoisting).
Reported as "Invariant Call" by [loop-hoisting](/docs/1.0.0/checker-loop-hoisting).
We report this issue type when a function call is loop-invariant and hoistable, i.e.
- the function has no side side effects (pure)
@ -1061,7 +1061,7 @@ void invariant_hoist(int size) {
## IVAR_NOT_NULL_CHECKED
Reported as "Ivar Not Null Checked" by [biabduction](/docs/checker-biabduction).
Reported as "Ivar Not Null Checked" by [biabduction](/docs/1.0.0/checker-biabduction).
This error type is only reported in Objective-C. This is similar to Null
dereference, but Infer hasn't found a whole trace where the error can happen,
@ -1080,17 +1080,17 @@ is not called with `nil`.
## JAVASCRIPT_INJECTION
Reported as "Javascript Injection" by [quandary](/docs/checker-quandary).
Reported as "Javascript Injection" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted data flows into JavaScript.
## LAB_RESOURCE_LEAK
Reported as "Lab Resource Leak" by [resource-leak-lab](/docs/checker-resource-leak-lab).
Reported as "Lab Resource Leak" by [resource-leak-lab](/docs/1.0.0/checker-resource-leak-lab).
Toy issue.
## LOCKLESS_VIOLATION
Reported as "Lockless Violation" by [starvation](/docs/checker-starvation).
Reported as "Lockless Violation" by [starvation](/docs/1.0.0/checker-starvation).
A method implements an interface signature annotated with `@Lockless` but which transitively acquires a lock.
@ -1113,7 +1113,7 @@ class C implements I {
## LOCK_CONSISTENCY_VIOLATION
Reported as "Lock Consistency Violation" by [racerd](/docs/checker-racerd).
Reported as "Lock Consistency Violation" by [racerd](/docs/1.0.0/checker-racerd).
This is a C++ and Objective C error reported whenever:
@ -1138,12 +1138,12 @@ container (an array, a vector, etc).
## LOGGING_PRIVATE_DATA
Reported as "Logging Private Data" by [quandary](/docs/checker-quandary).
Reported as "Logging Private Data" by [quandary](/docs/1.0.0/checker-quandary).
Undocumented.
## MEMORY_LEAK
Reported as "Memory Leak" by [pulse](/docs/checker-pulse).
Reported as "Memory Leak" by [pulse](/docs/1.0.0/checker-pulse).
### Memory leak in C
@ -1172,12 +1172,12 @@ objects from Core Foundation or Core Graphics don't get released.
## MISSING_REQUIRED_PROP
Reported as "Missing Required Prop" by [litho-required-props](/docs/checker-litho-required-props).
Reported as "Missing Required Prop" by [litho-required-props](/docs/1.0.0/checker-litho-required-props).
As explained by the analysis.
## MIXED_SELF_WEAKSELF
Reported as "Mixed Self WeakSelf" by [self-in-block](/docs/checker-self-in-block).
Reported as "Mixed Self WeakSelf" by [self-in-block](/docs/1.0.0/checker-self-in-block).
This happens when an Objective-C block captures both `self` and `weakSelf`, a
weak pointer to `self`. Possibly the developer meant to capture only `weakSelf`
@ -1186,7 +1186,7 @@ instead of `strongSelf`. In this case, this could cause a retain cycle.
## MULTIPLE_WEAKSELF
Reported as "Multiple WeakSelf Use" by [self-in-block](/docs/checker-self-in-block).
Reported as "Multiple WeakSelf Use" by [self-in-block](/docs/1.0.0/checker-self-in-block).
An Objective-C block uses `weakSelf` more than once. This could lead to
unexpected behaviour. Even if `weakSelf` is not nil in the first use, it could
@ -1196,18 +1196,18 @@ in the block.
## MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE
Reported as "Mutable Local Variable In Component File" by [linters](/docs/checker-linters).
Reported as "Mutable Local Variable In Component File" by [linters](/docs/1.0.0/checker-linters).
[Doc in ComponentKit page](http://componentkit.org/docs/avoid-local-variables)
## NULLPTR_DEREFERENCE
Reported as "Nullptr Dereference" by [pulse](/docs/checker-pulse).
Reported as "Nullptr Dereference" by [pulse](/docs/1.0.0/checker-pulse).
See [NULL_DEREFERENCE](#null_dereference).
## NULL_DEREFERENCE
Reported as "Null Dereference" by [biabduction](/docs/checker-biabduction).
Reported as "Null Dereference" by [biabduction](/docs/1.0.0/checker-biabduction).
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
@ -1309,12 +1309,12 @@ but that is for later.
## OPTIONAL_EMPTY_ACCESS
Reported as "Optional Empty Access" by [pulse](/docs/checker-pulse).
Reported as "Optional Empty Access" by [pulse](/docs/1.0.0/checker-pulse).
Reports on accessing folly::Optional when it is none.
## PARAMETER_NOT_NULL_CHECKED
Reported as "Parameter Not Null Checked" by [biabduction](/docs/checker-biabduction).
Reported as "Parameter Not Null Checked" by [biabduction](/docs/1.0.0/checker-biabduction).
This error type is reported only in Objective-C. It is similar to Null
dereference, but Infer hasn't found a whole trace where the error can happen,
@ -1343,7 +1343,7 @@ system), that the argument won't be `nil`. This will silence the warning.
## POINTER_TO_CONST_OBJC_CLASS
Reported as "Pointer To Const Objc Class" by [linters](/docs/checker-linters).
Reported as "Pointer To Const Objc Class" by [linters](/docs/1.0.0/checker-linters).
In Objective-C, `const Class *` represents a mutable pointer pointing to an
Objective-C class where the ivars cannot be changed. More useful is
@ -1352,7 +1352,7 @@ changed.
## PREMATURE_NIL_TERMINATION_ARGUMENT
Reported as "Premature Nil Termination Argument" by [biabduction](/docs/checker-biabduction).
Reported as "Premature Nil Termination Argument" by [biabduction](/docs/1.0.0/checker-biabduction).
This error type is reported in C and Objective-C. In many variadic methods,
`nil` is used to signify the end of the list of input objects. This is similar
@ -1372,7 +1372,7 @@ created, and not an array `@[@"aaa", str, @"bbb"]` of size 3 as expected.
## PURE_FUNCTION
Reported as "Pure Function" by [purity](/docs/checker-purity).
Reported as "Pure Function" by [purity](/docs/1.0.0/checker-purity).
This issue type indicates pure functions. For instance, below functions would be marked as pure:
@ -1410,12 +1410,12 @@ void set_impure(int x, int y) {
## QUANDARY_TAINT_ERROR
Reported as "Taint Error" by [quandary](/docs/checker-quandary).
Reported as "Taint Error" by [quandary](/docs/1.0.0/checker-quandary).
Generic taint error when nothing else fits.
## RESOURCE_LEAK
Reported as "Resource Leak" by [biabduction](/docs/checker-biabduction).
Reported as "Resource Leak" by [biabduction](/docs/1.0.0/checker-biabduction).
Infer reports resource leaks in C, Objective-C and Java. In general, resources
are entities such as files, sockets, connections, etc, that need to be closed
@ -1693,7 +1693,7 @@ useful, but you cannot use it blindly when you see a resource-allocation site.
## RETAIN_CYCLE
Reported as "Retain Cycle" by [biabduction](/docs/checker-biabduction).
Reported as "Retain Cycle" by [biabduction](/docs/1.0.0/checker-biabduction).
A retain cycle is a situation when object A retains object B, and object B
retains object A at the same time. Here is an example:
@ -1728,27 +1728,27 @@ hierarchy:
## SHELL_INJECTION
Reported as "Shell Injection" by [quandary](/docs/checker-quandary).
Reported as "Shell Injection" by [quandary](/docs/1.0.0/checker-quandary).
Environment variable or file data flowing to shell.
## SHELL_INJECTION_RISK
Reported as "Shell Injection Risk" by [quandary](/docs/checker-quandary).
Reported as "Shell Injection Risk" by [quandary](/docs/1.0.0/checker-quandary).
Code injection if the caller of the endpoint doesn't sanitize on its end.
## SQL_INJECTION
Reported as "Sql Injection" by [quandary](/docs/checker-quandary).
Reported as "Sql Injection" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted and unescaped data flows to SQL.
## SQL_INJECTION_RISK
Reported as "Sql Injection Risk" by [quandary](/docs/checker-quandary).
Reported as "Sql Injection Risk" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted and unescaped data flows to SQL.
## STACK_VARIABLE_ADDRESS_ESCAPE
Reported as "Stack Variable Address Escape" by [pulse](/docs/checker-pulse).
Reported as "Stack Variable Address Escape" by [pulse](/docs/1.0.0/checker-pulse).
Reported when an address pointing into the stack of the current
function will escape to its calling context. Such addresses will
@ -1766,7 +1766,7 @@ int* foo() {
## STARVATION
Reported as "UI Thread Starvation" by [starvation](/docs/checker-starvation).
Reported as "UI Thread Starvation" by [starvation](/docs/1.0.0/checker-starvation).
This error is reported in Java, and specifically on Android. These reports are
triggered when a method that runs on the UI thread may block, thus potentially
@ -1826,7 +1826,7 @@ include the JAR files in `infer/annotations` for this annotation to work.
## STATIC_INITIALIZATION_ORDER_FIASCO
Reported as "Static Initialization Order Fiasco" by [siof](/docs/checker-siof).
Reported as "Static Initialization Order Fiasco" by [siof](/docs/1.0.0/checker-siof).
This error is reported in C++. It fires when the initialization of a static
variable `A`, accesses a static variable `B` from another translation unit
@ -1838,7 +1838,7 @@ For more technical definition and techniques to avoid/remediate, see the
## STRICT_MODE_VIOLATION
Reported as "Strict Mode Violation" by [starvation](/docs/checker-starvation).
Reported as "Strict Mode Violation" by [starvation](/docs/1.0.0/checker-starvation).
Android has a feature called
[strict mode](https://developer.android.com/reference/android/os/StrictMode),
@ -1852,7 +1852,7 @@ To suppress this warning, it's enough to annotate the offending method with
## STRONG_DELEGATE_WARNING
Reported as "Strong Delegate Warning" by [linters](/docs/checker-linters).
Reported as "Strong Delegate Warning" by [linters](/docs/1.0.0/checker-linters).
This check warns you when you have a property called delegate or variations
thereof which is declared strong. The idea is that delegates should generally be
@ -1860,7 +1860,7 @@ weak, otherwise this may cause retain cycles.
## STRONG_SELF_NOT_CHECKED
Reported as "StrongSelf Not Checked" by [self-in-block](/docs/checker-self-in-block).
Reported as "StrongSelf Not Checked" by [self-in-block](/docs/1.0.0/checker-self-in-block).
When a block captures `weakSelf` in the following pattern:
@ -1877,11 +1877,11 @@ otherwise this could cause a crash because the weak pointer `weakSelf` could be
## THREAD_SAFETY_VIOLATION
Reported as "Thread Safety Violation" by [racerd](/docs/checker-racerd).
Reported as "Thread Safety Violation" by [racerd](/docs/1.0.0/checker-racerd).
This warning indicates a potential data race in Java. The analyser is called
RacerD and this section gives brief but a mostly complete description of its
features. See the [RacerD page](/docs/checker-racerd) for more in-depth information and
features. See the [RacerD page](/docs/1.0.0/checker-racerd) for more in-depth information and
examples.
### Thread-safety: What is a data race
@ -1973,17 +1973,17 @@ These annotations can be found at `com.facebook.infer.annotation.*`.
## TOPL_BIABD_ERROR
Reported as "Topl Biabd Error" by [topl-biabd](/docs/checker-topl-biabd).
Reported as "Topl Biabd Error" by [topl-biabd](/docs/1.0.0/checker-topl-biabd).
Experimental.
## TOPL_PULSE_ERROR
Reported as "Topl Pulse Error" by [topl-pulse](/docs/checker-topl-pulse).
Reported as "Topl Pulse Error" by [topl-pulse](/docs/1.0.0/checker-topl-pulse).
Experimental.
## UNINITIALIZED_VALUE
Reported as "Uninitialized Value" by [uninit](/docs/checker-uninit).
Reported as "Uninitialized Value" by [uninit](/docs/1.0.0/checker-uninit).
A value is read before it has been initialized. For example, in C:
@ -2007,79 +2007,79 @@ void foo() {
## UNREACHABLE_CODE
Reported as "Unreachable Code" by [bufferoverrun](/docs/checker-bufferoverrun).
Reported as "Unreachable Code" by [bufferoverrun](/docs/1.0.0/checker-bufferoverrun).
A program point is unreachable.
## UNTRUSTED_BUFFER_ACCESS
Reported as "Untrusted Buffer Access" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Buffer Access" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted data of any kind flowing to buffer.
## UNTRUSTED_DESERIALIZATION
Reported as "Untrusted Deserialization" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Deserialization" by [quandary](/docs/1.0.0/checker-quandary).
User-controlled deserialization.
## UNTRUSTED_DESERIALIZATION_RISK
Reported as "Untrusted Deserialization Risk" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Deserialization Risk" by [quandary](/docs/1.0.0/checker-quandary).
User-controlled deserialization
## UNTRUSTED_ENVIRONMENT_CHANGE_RISK
Reported as "Untrusted Environment Change Risk" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Environment Change Risk" by [quandary](/docs/1.0.0/checker-quandary).
User-controlled environment mutation.
## UNTRUSTED_FILE
Reported as "Untrusted File" by [quandary](/docs/checker-quandary).
Reported as "Untrusted File" by [quandary](/docs/1.0.0/checker-quandary).
User-controlled file creation; may be vulnerable to path traversal and more.
## UNTRUSTED_FILE_RISK
Reported as "Untrusted File Risk" by [quandary](/docs/checker-quandary).
Reported as "Untrusted File Risk" by [quandary](/docs/1.0.0/checker-quandary).
User-controlled file creation; may be vulnerable to path traversal and more.
## UNTRUSTED_HEAP_ALLOCATION
Reported as "Untrusted Heap Allocation" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Heap Allocation" by [quandary](/docs/1.0.0/checker-quandary).
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](/docs/checker-quandary).
Reported as "Untrusted Intent Creation" by [quandary](/docs/1.0.0/checker-quandary).
Creating an Intent from user-controlled data.
## UNTRUSTED_URL_RISK
Reported as "Untrusted Url Risk" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Url Risk" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted flag, environment variable, or file data flowing to URL.
## UNTRUSTED_VARIABLE_LENGTH_ARRAY
Reported as "Untrusted Variable Length Array" by [quandary](/docs/checker-quandary).
Reported as "Untrusted Variable Length Array" by [quandary](/docs/1.0.0/checker-quandary).
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](/docs/checker-quandary).
Reported as "User Controlled Sql Risk" by [quandary](/docs/1.0.0/checker-quandary).
Untrusted data flows to SQL (no injection risk).
## USE_AFTER_DELETE
Reported as "Use After Delete" by [pulse](/docs/checker-pulse).
Reported as "Use After Delete" by [pulse](/docs/1.0.0/checker-pulse).
An address that was invalidated by a call to `delete` in C++ is dereferenced.
## USE_AFTER_FREE
Reported as "Use After Free" by [pulse](/docs/checker-pulse).
Reported as "Use After Free" by [pulse](/docs/1.0.0/checker-pulse).
An address that was invalidated by a call to `free` in C is dereferenced.
## USE_AFTER_LIFETIME
Reported as "Use After Lifetime" by [pulse](/docs/checker-pulse).
Reported as "Use After Lifetime" by [pulse](/docs/1.0.0/checker-pulse).
The lifetime of an object has ended but that object is being
accessed. For example, the address of a variable holding a C++ object
@ -2098,7 +2098,7 @@ void foo() {
## VECTOR_INVALIDATION
Reported as "Vector Invalidation" by [pulse](/docs/checker-pulse).
Reported as "Vector Invalidation" by [pulse](/docs/1.0.0/checker-pulse).
An address pointing into a C++ `std::vector` might have become
invalid. This can happen when an address is taken into a vector, then
@ -2121,7 +2121,7 @@ void deref_vector_element_after_push_back_bad(std::vector<int>& vec) {
## WEAK_SELF_IN_NO_ESCAPE_BLOCK
Reported as "Weak Self In No Escape Block" by [self-in-block](/docs/checker-self-in-block).
Reported as "Weak Self In No Escape Block" by [self-in-block](/docs/1.0.0/checker-self-in-block).
In many methods that take a block as an argument, the block position is
annotated with NS_NOESCAPE to mark that the block passed to this method won't be

@ -16,7 +16,7 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_ALLOCATES_MEMORY](/docs/all-issue-types#checkers_allocates_memory)
- [CHECKERS_ANNOTATION_REACHABILITY_ERROR](/docs/all-issue-types#checkers_annotation_reachability_error)
- [CHECKERS_CALLS_EXPENSIVE_METHOD](/docs/all-issue-types#checkers_calls_expensive_method)
- [CHECKERS_EXPENSIVE_OVERRIDES_UNANNOTATED](/docs/all-issue-types#checkers_expensive_overrides_unannotated)
- [CHECKERS_ALLOCATES_MEMORY](/docs/1.0.0/all-issue-types#checkers_allocates_memory)
- [CHECKERS_ANNOTATION_REACHABILITY_ERROR](/docs/1.0.0/all-issue-types#checkers_annotation_reachability_error)
- [CHECKERS_CALLS_EXPENSIVE_METHOD](/docs/1.0.0/all-issue-types#checkers_calls_expensive_method)
- [CHECKERS_EXPENSIVE_OVERRIDES_UNANNOTATED](/docs/1.0.0/all-issue-types#checkers_expensive_overrides_unannotated)

@ -16,13 +16,13 @@ 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:
- [BIABDUCTION_MEMORY_LEAK](/docs/all-issue-types#biabduction_memory_leak)
- [DANGLING_POINTER_DEREFERENCE](/docs/all-issue-types#dangling_pointer_dereference)
- [DIVIDE_BY_ZERO](/docs/all-issue-types#divide_by_zero)
- [EMPTY_VECTOR_ACCESS](/docs/all-issue-types#empty_vector_access)
- [IVAR_NOT_NULL_CHECKED](/docs/all-issue-types#ivar_not_null_checked)
- [NULL_DEREFERENCE](/docs/all-issue-types#null_dereference)
- [PARAMETER_NOT_NULL_CHECKED](/docs/all-issue-types#parameter_not_null_checked)
- [PREMATURE_NIL_TERMINATION_ARGUMENT](/docs/all-issue-types#premature_nil_termination_argument)
- [RESOURCE_LEAK](/docs/all-issue-types#resource_leak)
- [RETAIN_CYCLE](/docs/all-issue-types#retain_cycle)
- [BIABDUCTION_MEMORY_LEAK](/docs/1.0.0/all-issue-types#biabduction_memory_leak)
- [DANGLING_POINTER_DEREFERENCE](/docs/1.0.0/all-issue-types#dangling_pointer_dereference)
- [DIVIDE_BY_ZERO](/docs/1.0.0/all-issue-types#divide_by_zero)
- [EMPTY_VECTOR_ACCESS](/docs/1.0.0/all-issue-types#empty_vector_access)
- [IVAR_NOT_NULL_CHECKED](/docs/1.0.0/all-issue-types#ivar_not_null_checked)
- [NULL_DEREFERENCE](/docs/1.0.0/all-issue-types#null_dereference)
- [PARAMETER_NOT_NULL_CHECKED](/docs/1.0.0/all-issue-types#parameter_not_null_checked)
- [PREMATURE_NIL_TERMINATION_ARGUMENT](/docs/1.0.0/all-issue-types#premature_nil_termination_argument)
- [RESOURCE_LEAK](/docs/1.0.0/all-issue-types#resource_leak)
- [RETAIN_CYCLE](/docs/1.0.0/all-issue-types#retain_cycle)

@ -16,22 +16,22 @@ 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](/docs/all-issue-types#buffer_overrun_l1)
- [BUFFER_OVERRUN_L2](/docs/all-issue-types#buffer_overrun_l2)
- [BUFFER_OVERRUN_L3](/docs/all-issue-types#buffer_overrun_l3)
- [BUFFER_OVERRUN_L4](/docs/all-issue-types#buffer_overrun_l4)
- [BUFFER_OVERRUN_L5](/docs/all-issue-types#buffer_overrun_l5)
- [BUFFER_OVERRUN_S2](/docs/all-issue-types#buffer_overrun_s2)
- [BUFFER_OVERRUN_U5](/docs/all-issue-types#buffer_overrun_u5)
- [CONDITION_ALWAYS_FALSE](/docs/all-issue-types#condition_always_false)
- [CONDITION_ALWAYS_TRUE](/docs/all-issue-types#condition_always_true)
- [INFERBO_ALLOC_IS_BIG](/docs/all-issue-types#inferbo_alloc_is_big)
- [INFERBO_ALLOC_IS_NEGATIVE](/docs/all-issue-types#inferbo_alloc_is_negative)
- [INFERBO_ALLOC_IS_ZERO](/docs/all-issue-types#inferbo_alloc_is_zero)
- [INFERBO_ALLOC_MAY_BE_BIG](/docs/all-issue-types#inferbo_alloc_may_be_big)
- [INFERBO_ALLOC_MAY_BE_NEGATIVE](/docs/all-issue-types#inferbo_alloc_may_be_negative)
- [INTEGER_OVERFLOW_L1](/docs/all-issue-types#integer_overflow_l1)
- [INTEGER_OVERFLOW_L2](/docs/all-issue-types#integer_overflow_l2)
- [INTEGER_OVERFLOW_L5](/docs/all-issue-types#integer_overflow_l5)
- [INTEGER_OVERFLOW_U5](/docs/all-issue-types#integer_overflow_u5)
- [UNREACHABLE_CODE](/docs/all-issue-types#unreachable_code)
- [BUFFER_OVERRUN_L1](/docs/1.0.0/all-issue-types#buffer_overrun_l1)
- [BUFFER_OVERRUN_L2](/docs/1.0.0/all-issue-types#buffer_overrun_l2)
- [BUFFER_OVERRUN_L3](/docs/1.0.0/all-issue-types#buffer_overrun_l3)
- [BUFFER_OVERRUN_L4](/docs/1.0.0/all-issue-types#buffer_overrun_l4)
- [BUFFER_OVERRUN_L5](/docs/1.0.0/all-issue-types#buffer_overrun_l5)
- [BUFFER_OVERRUN_S2](/docs/1.0.0/all-issue-types#buffer_overrun_s2)
- [BUFFER_OVERRUN_U5](/docs/1.0.0/all-issue-types#buffer_overrun_u5)
- [CONDITION_ALWAYS_FALSE](/docs/1.0.0/all-issue-types#condition_always_false)
- [CONDITION_ALWAYS_TRUE](/docs/1.0.0/all-issue-types#condition_always_true)
- [INFERBO_ALLOC_IS_BIG](/docs/1.0.0/all-issue-types#inferbo_alloc_is_big)
- [INFERBO_ALLOC_IS_NEGATIVE](/docs/1.0.0/all-issue-types#inferbo_alloc_is_negative)
- [INFERBO_ALLOC_IS_ZERO](/docs/1.0.0/all-issue-types#inferbo_alloc_is_zero)
- [INFERBO_ALLOC_MAY_BE_BIG](/docs/1.0.0/all-issue-types#inferbo_alloc_may_be_big)
- [INFERBO_ALLOC_MAY_BE_NEGATIVE](/docs/1.0.0/all-issue-types#inferbo_alloc_may_be_negative)
- [INTEGER_OVERFLOW_L1](/docs/1.0.0/all-issue-types#integer_overflow_l1)
- [INTEGER_OVERFLOW_L2](/docs/1.0.0/all-issue-types#integer_overflow_l2)
- [INTEGER_OVERFLOW_L5](/docs/1.0.0/all-issue-types#integer_overflow_l5)
- [INTEGER_OVERFLOW_U5](/docs/1.0.0/all-issue-types#integer_overflow_u5)
- [UNREACHABLE_CODE](/docs/1.0.0/all-issue-types#unreachable_code)

@ -16,4 +16,4 @@ This checker is currently only useful for certain Facebook code.
## List of Issue Types
The following issue types are reported by this checker:
- [CONFIG_CHECKS_BETWEEN_MARKERS](/docs/all-issue-types#config_checks_between_markers)
- [CONFIG_CHECKS_BETWEEN_MARKERS](/docs/1.0.0/all-issue-types#config_checks_between_markers)

@ -34,7 +34,7 @@ The total cost of the node is the scalar product of these two vectors. Then, the
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](/docs/checker-bufferoverrun) (a numerical analysis that infers symbolic intervals)
- Get abstract ranges of the control variables from [InferBO](/docs/1.0.0/checker-bufferoverrun) (a numerical analysis that infers symbolic intervals)
- Construct complexity polynomials for loops and functions by via a constraint solving algorithm.
@ -62,7 +62,7 @@ void loop(ArrayList<Integer> list){
}
```
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`](/docs/all-issue-types#execution_time_complexity_increase) issue.
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`](/docs/1.0.0/all-issue-types#execution_time_complexity_increase) issue.
@ -90,11 +90,11 @@ There are a number of known limitations to the design of the static cost analysi
## List of Issue Types
The following issue types are reported by this checker:
- [AUTORELEASEPOOL_SIZE_COMPLEXITY_INCREASE](/docs/all-issue-types#autoreleasepool_size_complexity_increase)
- [AUTORELEASEPOOL_SIZE_COMPLEXITY_INCREASE_UI_THREAD](/docs/all-issue-types#autoreleasepool_size_complexity_increase_ui_thread)
- [AUTORELEASEPOOL_SIZE_UNREACHABLE_AT_EXIT](/docs/all-issue-types#autoreleasepool_size_unreachable_at_exit)
- [EXECUTION_TIME_COMPLEXITY_INCREASE](/docs/all-issue-types#execution_time_complexity_increase)
- [EXECUTION_TIME_COMPLEXITY_INCREASE_UI_THREAD](/docs/all-issue-types#execution_time_complexity_increase_ui_thread)
- [EXECUTION_TIME_UNREACHABLE_AT_EXIT](/docs/all-issue-types#execution_time_unreachable_at_exit)
- [INFINITE_AUTORELEASEPOOL_SIZE](/docs/all-issue-types#infinite_autoreleasepool_size)
- [INFINITE_EXECUTION_TIME](/docs/all-issue-types#infinite_execution_time)
- [AUTORELEASEPOOL_SIZE_COMPLEXITY_INCREASE](/docs/1.0.0/all-issue-types#autoreleasepool_size_complexity_increase)
- [AUTORELEASEPOOL_SIZE_COMPLEXITY_INCREASE_UI_THREAD](/docs/1.0.0/all-issue-types#autoreleasepool_size_complexity_increase_ui_thread)
- [AUTORELEASEPOOL_SIZE_UNREACHABLE_AT_EXIT](/docs/1.0.0/all-issue-types#autoreleasepool_size_unreachable_at_exit)
- [EXECUTION_TIME_COMPLEXITY_INCREASE](/docs/1.0.0/all-issue-types#execution_time_complexity_increase)
- [EXECUTION_TIME_COMPLEXITY_INCREASE_UI_THREAD](/docs/1.0.0/all-issue-types#execution_time_complexity_increase_ui_thread)
- [EXECUTION_TIME_UNREACHABLE_AT_EXIT](/docs/1.0.0/all-issue-types#execution_time_unreachable_at_exit)
- [INFINITE_AUTORELEASEPOOL_SIZE](/docs/1.0.0/all-issue-types#infinite_autoreleasepool_size)
- [INFINITE_EXECUTION_TIME](/docs/1.0.0/all-issue-types#infinite_execution_time)

@ -91,20 +91,20 @@ class C {
## List of Issue Types
The following issue types are reported by this checker:
- [ERADICATE_BAD_NESTED_CLASS_ANNOTATION](/docs/all-issue-types#eradicate_bad_nested_class_annotation)
- [ERADICATE_CONDITION_REDUNDANT](/docs/all-issue-types#eradicate_condition_redundant)
- [ERADICATE_FIELD_NOT_INITIALIZED](/docs/all-issue-types#eradicate_field_not_initialized)
- [ERADICATE_FIELD_NOT_NULLABLE](/docs/all-issue-types#eradicate_field_not_nullable)
- [ERADICATE_FIELD_OVER_ANNOTATED](/docs/all-issue-types#eradicate_field_over_annotated)
- [ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION](/docs/all-issue-types#eradicate_inconsistent_subclass_parameter_annotation)
- [ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION](/docs/all-issue-types#eradicate_inconsistent_subclass_return_annotation)
- [ERADICATE_META_CLASS_CAN_BE_NULLSAFE](/docs/all-issue-types#eradicate_meta_class_can_be_nullsafe)
- [ERADICATE_META_CLASS_IS_NULLSAFE](/docs/all-issue-types#eradicate_meta_class_is_nullsafe)
- [ERADICATE_META_CLASS_NEEDS_IMPROVEMENT](/docs/all-issue-types#eradicate_meta_class_needs_improvement)
- [ERADICATE_NULLABLE_DEREFERENCE](/docs/all-issue-types#eradicate_nullable_dereference)
- [ERADICATE_PARAMETER_NOT_NULLABLE](/docs/all-issue-types#eradicate_parameter_not_nullable)
- [ERADICATE_REDUNDANT_NESTED_CLASS_ANNOTATION](/docs/all-issue-types#eradicate_redundant_nested_class_annotation)
- [ERADICATE_RETURN_NOT_NULLABLE](/docs/all-issue-types#eradicate_return_not_nullable)
- [ERADICATE_RETURN_OVER_ANNOTATED](/docs/all-issue-types#eradicate_return_over_annotated)
- [ERADICATE_UNCHECKED_USAGE_IN_NULLSAFE](/docs/all-issue-types#eradicate_unchecked_usage_in_nullsafe)
- [ERADICATE_UNVETTED_THIRD_PARTY_IN_NULLSAFE](/docs/all-issue-types#eradicate_unvetted_third_party_in_nullsafe)
- [ERADICATE_BAD_NESTED_CLASS_ANNOTATION](/docs/1.0.0/all-issue-types#eradicate_bad_nested_class_annotation)
- [ERADICATE_CONDITION_REDUNDANT](/docs/1.0.0/all-issue-types#eradicate_condition_redundant)
- [ERADICATE_FIELD_NOT_INITIALIZED](/docs/1.0.0/all-issue-types#eradicate_field_not_initialized)
- [ERADICATE_FIELD_NOT_NULLABLE](/docs/1.0.0/all-issue-types#eradicate_field_not_nullable)
- [ERADICATE_FIELD_OVER_ANNOTATED](/docs/1.0.0/all-issue-types#eradicate_field_over_annotated)
- [ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION](/docs/1.0.0/all-issue-types#eradicate_inconsistent_subclass_parameter_annotation)
- [ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION](/docs/1.0.0/all-issue-types#eradicate_inconsistent_subclass_return_annotation)
- [ERADICATE_META_CLASS_CAN_BE_NULLSAFE](/docs/1.0.0/all-issue-types#eradicate_meta_class_can_be_nullsafe)
- [ERADICATE_META_CLASS_IS_NULLSAFE](/docs/1.0.0/all-issue-types#eradicate_meta_class_is_nullsafe)
- [ERADICATE_META_CLASS_NEEDS_IMPROVEMENT](/docs/1.0.0/all-issue-types#eradicate_meta_class_needs_improvement)
- [ERADICATE_NULLABLE_DEREFERENCE](/docs/1.0.0/all-issue-types#eradicate_nullable_dereference)
- [ERADICATE_PARAMETER_NOT_NULLABLE](/docs/1.0.0/all-issue-types#eradicate_parameter_not_nullable)
- [ERADICATE_REDUNDANT_NESTED_CLASS_ANNOTATION](/docs/1.0.0/all-issue-types#eradicate_redundant_nested_class_annotation)
- [ERADICATE_RETURN_NOT_NULLABLE](/docs/1.0.0/all-issue-types#eradicate_return_not_nullable)
- [ERADICATE_RETURN_OVER_ANNOTATED](/docs/1.0.0/all-issue-types#eradicate_return_over_annotated)
- [ERADICATE_UNCHECKED_USAGE_IN_NULLSAFE](/docs/1.0.0/all-issue-types#eradicate_unchecked_usage_in_nullsafe)
- [ERADICATE_UNVETTED_THIRD_PARTY_IN_NULLSAFE](/docs/1.0.0/all-issue-types#eradicate_unvetted_third_party_in_nullsafe)

@ -18,4 +18,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_FRAGMENT_RETAINS_VIEW](/docs/all-issue-types#checkers_fragment_retains_view)
- [CHECKERS_FRAGMENT_RETAINS_VIEW](/docs/1.0.0/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](/docs/all-issue-types#checkers_immutable_cast)
- [CHECKERS_IMMUTABLE_CAST](/docs/1.0.0/all-issue-types#checkers_immutable_cast)

@ -11,10 +11,10 @@ Supported languages:
- C/C++/ObjC: Experimental
- Java: Experimental
This is an experimental inter-procedural analysis that detects impure functions. It is meant to be an improvement over the [purity](/docs/checker-purity) analysis with a negation on the issue types. For each function, impurity analysis keeps track of not only the impurity of the function but also some additional information such as which parameters/globals the function modifies. It models functions with no summary/model as impure. The analysis relies on [Pulse](/docs/checker-pulse) summaries to determine impurity.
This is an experimental inter-procedural analysis that detects impure functions. It is meant to be an improvement over the [purity](/docs/1.0.0/checker-purity) analysis with a negation on the issue types. For each function, impurity analysis keeps track of not only the impurity of the function but also some additional information such as which parameters/globals the function modifies. It models functions with no summary/model as impure. The analysis relies on [Pulse](/docs/1.0.0/checker-pulse) summaries to determine impurity.
## List of Issue Types
The following issue types are reported by this checker:
- [IMPURE_FUNCTION](/docs/all-issue-types#impure_function)
- [IMPURE_FUNCTION](/docs/1.0.0/all-issue-types#impure_function)

@ -16,4 +16,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [INEFFICIENT_KEYSET_ITERATOR](/docs/all-issue-types#inefficient_keyset_iterator)
- [INEFFICIENT_KEYSET_ITERATOR](/docs/1.0.0/all-issue-types#inefficient_keyset_iterator)

@ -701,19 +701,19 @@ infer run --linters -- clang -c Test.m
```
There are a few other command-line options that are useful for using or
developing new linters in Infer. Read about them in the [`infer capture` manual](/docs/man-infer-capture).
developing new linters in Infer. Read about them in the [`infer capture` manual](/docs/1.0.0/man-infer-capture).
## List of Issue Types
The following issue types are reported by this checker:
- [ASSIGN_POINTER_WARNING](/docs/all-issue-types#assign_pointer_warning)
- [BAD_POINTER_COMPARISON](/docs/all-issue-types#bad_pointer_comparison)
- [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](/docs/all-issue-types#component_with_multiple_factory_methods)
- [CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK](/docs/all-issue-types#cxx_reference_captured_in_objc_block)
- [DIRECT_ATOMIC_PROPERTY_ACCESS](/docs/all-issue-types#direct_atomic_property_access)
- [DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER](/docs/all-issue-types#discouraged_weak_property_custom_setter)
- [GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL](/docs/all-issue-types#global_variable_initialized_with_function_or_method_call)
- [MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE](/docs/all-issue-types#mutable_local_variable_in_component_file)
- [POINTER_TO_CONST_OBJC_CLASS](/docs/all-issue-types#pointer_to_const_objc_class)
- [STRONG_DELEGATE_WARNING](/docs/all-issue-types#strong_delegate_warning)
- [ASSIGN_POINTER_WARNING](/docs/1.0.0/all-issue-types#assign_pointer_warning)
- [BAD_POINTER_COMPARISON](/docs/1.0.0/all-issue-types#bad_pointer_comparison)
- [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](/docs/1.0.0/all-issue-types#component_with_multiple_factory_methods)
- [CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK](/docs/1.0.0/all-issue-types#cxx_reference_captured_in_objc_block)
- [DIRECT_ATOMIC_PROPERTY_ACCESS](/docs/1.0.0/all-issue-types#direct_atomic_property_access)
- [DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER](/docs/1.0.0/all-issue-types#discouraged_weak_property_custom_setter)
- [GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL](/docs/1.0.0/all-issue-types#global_variable_initialized_with_function_or_method_call)
- [MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE](/docs/1.0.0/all-issue-types#mutable_local_variable_in_component_file)
- [POINTER_TO_CONST_OBJC_CLASS](/docs/1.0.0/all-issue-types#pointer_to_const_objc_class)
- [STRONG_DELEGATE_WARNING](/docs/1.0.0/all-issue-types#strong_delegate_warning)

@ -45,7 +45,7 @@ If the required props are not called, then annotation processor throws an except
## Examples
E.g. the following is caught as [MISSING_REQUIRED_PROP](/docs/all-issue-types#missing_required_prop) `prop2`.
E.g. the following is caught as [MISSING_REQUIRED_PROP](/docs/1.0.0/all-issue-types#missing_required_prop) `prop2`.
```java
MyComponent.create(c)
@ -67,4 +67,4 @@ Note that, the functions `create()` and `build()` could be defined in different
## List of Issue Types
The following issue types are reported by this checker:
- [MISSING_REQUIRED_PROP](/docs/all-issue-types#missing_required_prop)
- [MISSING_REQUIRED_PROP](/docs/1.0.0/all-issue-types#missing_required_prop)

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

@ -11,13 +11,13 @@ Supported languages:
- C/C++/ObjC: Yes
- Java: Yes
This checker detects opportunities to hoist function calls that are invariant to outside of loop bodies. The hoisting analysis relies on [purity](/docs/checker-purity) analysis to determine whather a function is pure or not.
This checker detects opportunities to hoist function calls that are invariant to outside of loop bodies. The hoisting analysis relies on [purity](/docs/1.0.0/checker-purity) analysis to determine whather a function is pure or not.
It has an additional mode that reports [loop-invariant functions that are expensive](/docs/all-issue-types#expensive_loop_invariant_call) (i.e. at least linear). This is enabled by the flag `--hoisting-report-only-expensive`.
It has an additional mode that reports [loop-invariant functions that are expensive](/docs/1.0.0/all-issue-types#expensive_loop_invariant_call) (i.e. at least linear). This is enabled by the flag `--hoisting-report-only-expensive`.
## List of Issue Types
The following issue types are reported by this checker:
- [EXPENSIVE_LOOP_INVARIANT_CALL](/docs/all-issue-types#expensive_loop_invariant_call)
- [INVARIANT_CALL](/docs/all-issue-types#invariant_call)
- [EXPENSIVE_LOOP_INVARIANT_CALL](/docs/1.0.0/all-issue-types#expensive_loop_invariant_call)
- [INVARIANT_CALL](/docs/1.0.0/all-issue-types#invariant_call)

@ -18,4 +18,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CHECKERS_PRINTF_ARGS](/docs/all-issue-types#checkers_printf_args)
- [CHECKERS_PRINTF_ARGS](/docs/1.0.0/all-issue-types#checkers_printf_args)

@ -16,12 +16,12 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CONSTANT_ADDRESS_DEREFERENCE](/docs/all-issue-types#constant_address_dereference)
- [MEMORY_LEAK](/docs/all-issue-types#memory_leak)
- [NULLPTR_DEREFERENCE](/docs/all-issue-types#nullptr_dereference)
- [OPTIONAL_EMPTY_ACCESS](/docs/all-issue-types#optional_empty_access)
- [STACK_VARIABLE_ADDRESS_ESCAPE](/docs/all-issue-types#stack_variable_address_escape)
- [USE_AFTER_DELETE](/docs/all-issue-types#use_after_delete)
- [USE_AFTER_FREE](/docs/all-issue-types#use_after_free)
- [USE_AFTER_LIFETIME](/docs/all-issue-types#use_after_lifetime)
- [VECTOR_INVALIDATION](/docs/all-issue-types#vector_invalidation)
- [CONSTANT_ADDRESS_DEREFERENCE](/docs/1.0.0/all-issue-types#constant_address_dereference)
- [MEMORY_LEAK](/docs/1.0.0/all-issue-types#memory_leak)
- [NULLPTR_DEREFERENCE](/docs/1.0.0/all-issue-types#nullptr_dereference)
- [OPTIONAL_EMPTY_ACCESS](/docs/1.0.0/all-issue-types#optional_empty_access)
- [STACK_VARIABLE_ADDRESS_ESCAPE](/docs/1.0.0/all-issue-types#stack_variable_address_escape)
- [USE_AFTER_DELETE](/docs/1.0.0/all-issue-types#use_after_delete)
- [USE_AFTER_FREE](/docs/1.0.0/all-issue-types#use_after_free)
- [USE_AFTER_LIFETIME](/docs/1.0.0/all-issue-types#use_after_lifetime)
- [VECTOR_INVALIDATION](/docs/1.0.0/all-issue-types#vector_invalidation)

@ -13,7 +13,7 @@ Supported languages:
This is an experimental inter-procedural analysis that detects pure (side-effect free) functions. For each function, purity analysis keeps track of not only the purity of the function but also some additional information such as whether the function modifies a global variable or which of the parameters are modified. It models functions with no summary/model as modifying the global state (hence impure).
If the function is pure (i.e. doesn't modify any global state or its parameters and doesn't call any unknown functions), then it reports an [`PURE_FUNCTION`](/docs/all-issue-types#pure_function) issue.
If the function is pure (i.e. doesn't modify any global state or its parameters and doesn't call any unknown functions), then it reports an [`PURE_FUNCTION`](/docs/1.0.0/all-issue-types#pure_function) issue.
## Weaknesses
@ -31,7 +31,7 @@ void foo(Foo a){
}
```
in order to determine that `foo` is impure, we need to know that the write to `b`'s field is actually changing the function parameter `a`, i.e. we need to check if `b` is aliasing `a`. This is known as alias analysis and is hard to get right in a scalable manner. When this analysis was being developed, Infer didn't have a unified alias analysis and using biabduction seemed like a too daunting task at the time. Hence, we relied on [InferBo](/docs/checker-bufferoverrun)'s aliasing mechanism which was easy to invoke and integrate with. However, InferBo's aliasing analysis is far from perfect and causes issues for purity.
in order to determine that `foo` is impure, we need to know that the write to `b`'s field is actually changing the function parameter `a`, i.e. we need to check if `b` is aliasing `a`. This is known as alias analysis and is hard to get right in a scalable manner. When this analysis was being developed, Infer didn't have a unified alias analysis and using biabduction seemed like a too daunting task at the time. Hence, we relied on [InferBo](/docs/1.0.0/checker-bufferoverrun)'s aliasing mechanism which was easy to invoke and integrate with. However, InferBo's aliasing analysis is far from perfect and causes issues for purity.
To see the issue with the second point, consider the following program:
```java
@ -50,16 +50,16 @@ boolean contains(Integer i, ArrayList<Integer> list){
The existing purity analysis concludes that the above function `contains` is impure because it calls an impure function `next()` which modifies the iterator (hence it thinks it also modifies the `list`). However, notice that `contains` doesn't have an observable side-effect: `list.iterator()` returns a new object, `hasNext()` and `equals()` are pure, and `next()` only modifies the fields of the fresh object `listIterator`. Therefore, `contains` should be considered as pure.
To alleviate this problem, we have developed an [Impurity](/docs/checker-impurity) analysis which uses [pulse](/docs/checker-pulse) which can successfully analyze this program as pure \o/
To alleviate this problem, we have developed an [Impurity](/docs/1.0.0/checker-impurity) analysis which uses [pulse](/docs/1.0.0/checker-pulse) which can successfully analyze this program as pure \o/
The analysis is used by:
- [Loop-hoisting](/docs/checker-loop-hoisting) analysis which identifies loop-invariant function calls, i.e. functions that are pure and have loop-invariant arguments.
- [Cost](/docs/checker-cost) analysis which identifies control variables in the loop that affect how many times a loop is executed. In this computation, we need to prune control variables that do not affect how many times a loop is executed. In this pruning step, we need to compute loop-invariant variables (which requires the above analysis).
- [Loop-hoisting](/docs/1.0.0/checker-loop-hoisting) analysis which identifies loop-invariant function calls, i.e. functions that are pure and have loop-invariant arguments.
- [Cost](/docs/1.0.0/checker-cost) analysis which identifies control variables in the loop that affect how many times a loop is executed. In this computation, we need to prune control variables that do not affect how many times a loop is executed. In this pruning step, we need to compute loop-invariant variables (which requires the above analysis).
## List of Issue Types
The following issue types are reported by this checker:
- [PURE_FUNCTION](/docs/all-issue-types#pure_function)
- [PURE_FUNCTION](/docs/1.0.0/all-issue-types#pure_function)

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

@ -13,7 +13,7 @@ Supported languages:
RacerD finds data races in your C++ and Java code. This page gives a more in-depth
explanation of how the analysis works *for Java code*, but may be less complete than the
[Thread Safety Violation bug description page](/docs/all-issue-types#thread_safety_violation).
[Thread Safety Violation bug description page](/docs/1.0.0/all-issue-types#thread_safety_violation).
To run the analysis, you can use plain `infer` (to run RacerD along with other
analyses that are run by default) or `infer --racerd-only` (to run only RacerD).
@ -498,7 +498,7 @@ resource.
## List of Issue Types
The following issue types are reported by this checker:
- [GUARDEDBY_VIOLATION](/docs/all-issue-types#guardedby_violation)
- [INTERFACE_NOT_THREAD_SAFE](/docs/all-issue-types#interface_not_thread_safe)
- [LOCK_CONSISTENCY_VIOLATION](/docs/all-issue-types#lock_consistency_violation)
- [THREAD_SAFETY_VIOLATION](/docs/all-issue-types#thread_safety_violation)
- [GUARDEDBY_VIOLATION](/docs/1.0.0/all-issue-types#guardedby_violation)
- [INTERFACE_NOT_THREAD_SAFE](/docs/1.0.0/all-issue-types#interface_not_thread_safe)
- [LOCK_CONSISTENCY_VIOLATION](/docs/1.0.0/all-issue-types#lock_consistency_violation)
- [THREAD_SAFETY_VIOLATION](/docs/1.0.0/all-issue-types#thread_safety_violation)

@ -16,4 +16,4 @@ This toy checker does nothing by default. Hack on it to make it report resource
## List of Issue Types
The following issue types are reported by this checker:
- [LAB_RESOURCE_LEAK](/docs/all-issue-types#lab_resource_leak)
- [LAB_RESOURCE_LEAK](/docs/1.0.0/all-issue-types#lab_resource_leak)

@ -16,8 +16,8 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [CAPTURED_STRONG_SELF](/docs/all-issue-types#captured_strong_self)
- [MIXED_SELF_WEAKSELF](/docs/all-issue-types#mixed_self_weakself)
- [MULTIPLE_WEAKSELF](/docs/all-issue-types#multiple_weakself)
- [STRONG_SELF_NOT_CHECKED](/docs/all-issue-types#strong_self_not_checked)
- [WEAK_SELF_IN_NO_ESCAPE_BLOCK](/docs/all-issue-types#weak_self_in_no_escape_block)
- [CAPTURED_STRONG_SELF](/docs/1.0.0/all-issue-types#captured_strong_self)
- [MIXED_SELF_WEAKSELF](/docs/1.0.0/all-issue-types#mixed_self_weakself)
- [MULTIPLE_WEAKSELF](/docs/1.0.0/all-issue-types#multiple_weakself)
- [STRONG_SELF_NOT_CHECKED](/docs/1.0.0/all-issue-types#strong_self_not_checked)
- [WEAK_SELF_IN_NO_ESCAPE_BLOCK](/docs/1.0.0/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](/docs/all-issue-types#static_initialization_order_fiasco)
- [STATIC_INITIALIZATION_ORDER_FIASCO](/docs/1.0.0/all-issue-types#static_initialization_order_fiasco)

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

@ -16,4 +16,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [TOPL_BIABD_ERROR](/docs/all-issue-types#topl_biabd_error)
- [TOPL_BIABD_ERROR](/docs/1.0.0/all-issue-types#topl_biabd_error)

@ -16,4 +16,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [TOPL_PULSE_ERROR](/docs/all-issue-types#topl_pulse_error)
- [TOPL_PULSE_ERROR](/docs/1.0.0/all-issue-types#topl_pulse_error)

@ -16,4 +16,4 @@ Supported languages:
## List of Issue Types
The following issue types are reported by this checker:
- [UNINITIALIZED_VALUE](/docs/all-issue-types#uninitialized_value)
- [UNINITIALIZED_VALUE](/docs/1.0.0/all-issue-types#uninitialized_value)

@ -43,7 +43,7 @@ infer run -- xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld
### "infer [options] -- \<build command\>" fails during a linking step
The linker will sometimes not work if files have been compiled using a different
compiler, such as the one Infer uses [under the hood](/docs/infer-workflow) to
compiler, such as the one Infer uses [under the hood](/docs/1.0.0/infer-workflow) to
analyze your files.
A workaround consists in setting the `LD` environment variable to a dummy

Loading…
Cancel
Save