List of all checkers
Here is an overview of the checkers currently available in Infer.
Annotation Reachabilityβ
Given pairs of source and sink annotations, e.g. @A
and @B
, this checker will warn whenever some method annotated with @A
calls, directly or indirectly, another method annotated with @B
. Besides the custom pairs, it is also possible to enable some built-in checks, such as @PerformanceCritical
reaching @Expensive
or @NoAllocation
reaching new
. See flags starting with --annotation-reachability
.
Visit here for more information.
Biabductionβ
This analysis deals with a range of issues, many linked to memory safety.
***DEPRECATED*** This has been replaced by Pulse and will be removed in the next release.
Visit here for more information.
Buffer Overrun Analysis (InferBO)β
InferBO is a detector for out-of-bounds array accesses.
Visit here for more information.
Config Impact Analysisβ
[EXPERIMENTAL] Collects function that are called without config checks.
Visit here for more information.
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 infer reportdiff
.
Visit here for more information.
Datalog-based points-to analysisβ
Experimental datalog-based points-to analysis.
Visit here for more information.
Fragment Retains Viewβ
Detects when Android fragments are not explicitly nullified before becoming unreachable.
***DEPRECATED*** Unmaintained due to poor precision.
Visit here for more information.
Impurityβ
Detects functions with potential side-effects. Same as "purity", but implemented on top of Pulse.
Visit here for more information.
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.
Visit here for more information.
Lineageβ
Computes a dataflow graph
Visit here for more information.
Litho "Required Props"β
Checks that all non-optional @Prop
s have been specified when constructing Litho components.
Visit here for more information.
Livenessβ
Detection of dead stores and unused variables.
Visit here for more information.
Loop Hoistingβ
Detect opportunities to hoist function calls that are invariant outside of loop bodies for efficiency.
Visit here for more information.
Parameter Not Null Checkedβ
An Objective-C-specific analysis to detect when a block parameter is used before being checked for null first.
Visit here for more information.
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")
***DEPRECATED*** Unmaintained.
Visit here for more information.
Pulseβ
General-purpose memory and value analysis engine.
Visit here for more information.
Purityβ
Detects pure (side-effect-free) functions. A different implementation of "impurity".
Visit here for more information.
Quandaryβ
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.
***DEPRECATED*** Taint analysis is now supported by the Pulse checker and Quandary will be removed in the next release.
Visit here for more information.
RacerDβ
Thread safety analysis.
Visit here for more information.
Resource Leak Lab Exerciseβ
Toy checker for the "resource leak" write-your-own-checker exercise.
Visit here for more information.
SIL validationβ
This checker validates that all SIL instructions in all procedure bodies conform to a (front-end specific) subset of SIL.
Visit here for more information.
Static Initialization Order Fiascoβ
Catches Static Initialization Order Fiascos in C++, that can lead to subtle, compiler-version-dependent errors.
Visit here for more information.
Scope Leakageβ
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).
Visit here for more information.
Self in Blockβ
An Objective-C-specific analysis to detect when a block captures self
.
Visit here for more information.
Starvationβ
Detect various kinds of situations when no progress is being made because of concurrency errors.
Visit here for more information.
Toplβ
Detect errors based on user-provided state machines describing temporal properties over multiple objects.