List of all categories of issue types
Here are all the categories that issue types might belong to in Infer. Some issue types have no associated category at the moment. This usually indicates that the issue type is not yet mature enough to be used.
Concurrencyβ
Concurrent accesses to the same resource conflict in a way that can give incorrect results, block progress, or result in undefined behaviour.
Issue types in this category:
- DEADLOCK
- GUARDEDBY_VIOLATION
- INTERFACE_NOT_THREAD_SAFE
- LOCK_CONSISTENCY_VIOLATION
- THREAD_SAFETY_VIOLATION
Logic errorβ
Something that does not make sense and the sign of a potential programming error.
Issue types in this category:
Memory errorβ
Incorrect handling of pointers that isn't a null pointer dereference, but can still result in undefined behaviour and crashes.
Issue types in this category:
- CXX_REF_CAPTURED_IN_BLOCK
- NIL_MESSAGING_TO_NON_POD
- NIL_MESSAGING_TO_NON_POD_LATENT
- PULSE_REFERENCE_STABILITY
- PULSE_UNINITIALIZED_VALUE
- STACK_VARIABLE_ADDRESS_ESCAPE
- STRONG_SELF_NOT_CHECKED
- USE_AFTER_DELETE
- USE_AFTER_DELETE_LATENT
- USE_AFTER_FREE
- USE_AFTER_FREE_LATENT
- USE_AFTER_LIFETIME
- USE_AFTER_LIFETIME_LATENT
- VECTOR_INVALIDATION
- VECTOR_INVALIDATION_LATENT
Null pointer dereferenceβ
The null pointer is used where a valid pointer is required, causing a memory fault and a crash. For example, it is dereferenced.
Issue types in this category:
- NIL_BLOCK_CALL
- NIL_BLOCK_CALL_LATENT
- NULLPTR_DEREFERENCE
- NULLPTR_DEREFERENCE_IN_NULLSAFE_CLASS
- NULLPTR_DEREFERENCE_IN_NULLSAFE_CLASS_LATENT
- NULLPTR_DEREFERENCE_LATENT
- NULL_DEREFERENCE
Perf regressionβ
Unnecessary (or blocking) computation is performed, potentially causing a performance or responsiveness regression.
Issue types in this category:
- CHECKERS_ALLOCATES_MEMORY
- CHECKERS_ANNOTATION_REACHABILITY_ERROR
- CONFIG_IMPACT
- INEFFICIENT_KEYSET_ITERATOR
- IPC_ON_UI_THREAD
- PULSE_CONST_REFABLE
- PULSE_READONLY_SHARED_PTR_PARAM
- PULSE_UNNECESSARY_COPY
- PULSE_UNNECESSARY_COPY_ASSIGNMENT
- PULSE_UNNECESSARY_COPY_ASSIGNMENT_CONST
- PULSE_UNNECESSARY_COPY_ASSIGNMENT_MOVABLE
- PULSE_UNNECESSARY_COPY_INTERMEDIATE
- PULSE_UNNECESSARY_COPY_INTERMEDIATE_CONST
- PULSE_UNNECESSARY_COPY_MOVABLE
- PULSE_UNNECESSARY_COPY_OPTIONAL
- PULSE_UNNECESSARY_COPY_OPTIONAL_CONST
- PULSE_UNNECESSARY_COPY_RETURN
- REGEX_OP_ON_UI_THREAD
- STRICT_MODE_VIOLATION
Resource leakβ
A resource (for example memory, or a file descriptor) has been manually allocated but not released, possibly creating memory pressure over time or even incorrect results.
Issue types in this category:
- BIABDUCTION_MEMORY_LEAK
- BIABDUCTION_RETAIN_CYCLE
- CAPTURED_STRONG_SELF
- CHECKERS_FRAGMENT_RETAINS_VIEW
- MEMORY_LEAK_C
- MEMORY_LEAK_CPP
- MIXED_SELF_WEAKSELF
- PULSE_RESOURCE_LEAK
- PULSE_UNAWAITED_AWAITABLE
- RESOURCE_LEAK
- RETAIN_CYCLE
- RETAIN_CYCLE_NO_WEAK_INFO
Runtime exceptionβ
A runtime exception can occur and potentially crash the program.
Issue types in this category:
- BAD_ARG
- BAD_ARG_LATENT
- BAD_GENERATOR
- BAD_GENERATOR_LATENT
- BAD_KEY
- BAD_KEY_LATENT
- BAD_MAP
- BAD_MAP_LATENT
- BAD_RECORD
- BAD_RECORD_LATENT
- MISSING_REQUIRED_PROP
- MUTUAL_RECURSION_CYCLE
- NIL_INSERTION_INTO_COLLECTION
- NIL_INSERTION_INTO_COLLECTION_LATENT
- NO_MATCHING_BRANCH_IN_TRY
- NO_MATCHING_BRANCH_IN_TRY_LATENT
- NO_MATCHING_CASE_CLAUSE
- NO_MATCHING_CASE_CLAUSE_LATENT
- NO_MATCHING_ELSE_CLAUSE
- NO_MATCHING_ELSE_CLAUSE_LATENT
- NO_MATCHING_FUNCTION_CLAUSE
- NO_MATCHING_FUNCTION_CLAUSE_LATENT
- NO_MATCH_OF_RHS
- NO_MATCH_OF_RHS_LATENT
- NO_TRUE_BRANCH_IN_IF
- NO_TRUE_BRANCH_IN_IF_LATENT
- NULL_ARGUMENT
- NULL_ARGUMENT_LATENT
- OPTIONAL_EMPTY_ACCESS
- OPTIONAL_EMPTY_ACCESS_LATENT
- PULSE_CANNOT_INSTANTIATE_ABSTRACT_CLASS
- PULSE_DICT_MISSING_KEY
- PULSE_DYNAMIC_TYPE_MISMATCH
- PULSE_UNINITIALIZED_CONST
Sensitive data flowβ
Sensitive data is flowing where it shouldn't.
Issue types in this category:
Ungated codeβ
Code must be under a gating mechanism but isn't.
Issue types in this category: