Here is an overview of the checkers currently available in Infer.
Given a pair of source and sink annotation, e.g.
@Expensive, this checker will warn whenever some method annotated with
@PerformanceCritical calls, directly or indirectly, another method annotated with
This analysis deals with a range of issues, many linked to memory safety.
Buffer Overrun Analysis (InferBO)
InferBO is a detector for out-of-bounds array accesses.
Config Impact Analysis
[EXPERIMENTAL] Collects function that are called without config checks.
Cost: Complexity Analysis
Computes the asymptotic complexity of functions with respect to execution cost or other user defined resources. Can be used to detect changes in the complexity with
Datalog-based points-to analysis
Experimental datalog-based points-to analysis.
@Nullable checker for Java annotations.
***DEPRECATED*** Unmaintained and will be removed in the future. Consider using NullAway as an alternative to Eradicate.
Fragment Retains View
Detects when Android fragments are not explicitly nullified before becoming unreachable.
***DEPRECATED*** Unmaintained due to poor precision.
Detection of object cast from immutable types to mutable types. For instance, it will detect casts from
***DEPRECATED*** Unmaintained due to poor actionability of the reports.
Detects functions with potential side-effects. Same as "purity", but implemented on top of Pulse.
Inefficient keySet Iterator
Check for inefficient uses of iterators that iterate on keys then lookup their values, instead of iterating on key-value pairs directly.
AST Language (AL)
Declarative linting framework over the Clang AST.
***DEPRECATED*** On end-of-life support, may be removed in the future.
Litho "Required Props"
Checks that all non-optional
@Props have been specified when constructing Litho components.
Detection of dead stores and unused variables.
Detect opportunities to hoist function calls that are invariant outside of loop bodies for efficiency.
Parameter Not Null Checked
An Objective-C-specific analysis to detect when a block parameter is used before being checked for null first.
printf() Argument Types
Detect mismatches between the Java
printf format strings and the argument types For example, this checker will warn about the type error in
printf("Hello %d", "world")
Memory and lifetime analysis.
Detects pure (side-effect-free) functions. A different implementation of "impurity".
The Quandary taint analysis detects flows of values between sources and sinks, except if the value went through a "sanitizer". In addition to some defaults, users can specify their own sources, sinks, and sanitizers functions.
Thread safety analysis.
Resource Leak Lab Exercise
Toy checker for the "resource leak" write-your-own-checker exercise.
Resource Leak checker for .NET
"resource leak" checker for .NET.
The Java/Kotlin checker takes into account a set of "scope" annotations and a must-not-hold relation over the scopes. The checker raises an alarm if there exists a field access path from object A to object B, with respective scopes SA and SB, such that must-not-hold(SA, SB).
Static Initialization Order Fiasco
Catches Static Initialization Order Fiascos in C++, that can lead to subtle, compiler-version-dependent errors.
Computes a dataflow graph
Self in Block
An Objective-C-specific analysis to detect when a block captures
Detect various kinds of situations when no progress is being made because of concurrency errors.
Detect errors based on user-provided state machines describing temporal properties over multiple objects.
Warns when values are used before having been initialized.
***DEPRECATED*** Uninitialized value checking has moved to Pulse.