clang 8.0.0

Macros | Enumerations | Functions
NullabilityChecker.cpp File Reference
`#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"`
`#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"`
`#include "clang/StaticAnalyzer/Core/Checker.h"`
`#include "clang/StaticAnalyzer/Core/CheckerManager.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"`
`#include "llvm/ADT/StringExtras.h"`
`#include "llvm/Support/Path.h"`
Include dependency graph for NullabilityChecker.cpp:

Go to the source code of this file.

## Macros
#define | REGISTER_CHECKER(name, trackingRequired)

## Enumerations
enum | ErrorKind : int

## Functions
| REGISTER_MAP_WITH_PROGRAMSTATE (NullabilityMap, const MemRegion *, NullabilityState) enum class NullConstraint
static NullConstraint | getNullConstraint (DefinedOrUnknownSVal Val, ProgramStateRef State)
static bool | checkValueAtLValForInvariantViolation (ProgramStateRef State, SVal LV, QualType T)
| Returns true when the value stored at the given location has been constrained to null after being passed through an object of nonnnull type. More...
static bool | checkParamsForPreconditionViolation (ArrayRef< ParmVarDecl *> Params, ProgramStateRef State, const LocationContext *LocCtxt)
static bool | checkSelfIvarsForInvariantViolation (ProgramStateRef State, const LocationContext *LocCtxt)
static bool | checkInvariantViolation (ProgramStateRef State, ExplodedNode *N, CheckerContext &C)
static const Expr * | lookThroughImplicitCasts (const Expr *E)
| Find the outermost subexpression of E that is not an implicit cast. More...
static Nullability | getReceiverNullability (const ObjCMethodCall &M, ProgramStateRef State)
static const Expr * | matchValueExprForBind (const Stmt *S)
| For a given statement performing a bind, attempt to syntactically match the expression resulting in the bound value. More...
static bool | isARCNilInitializedLocal (CheckerContext &C, const Stmt *S)
| Returns true if. More...

## Macro Definition Documentation

## ◆ REGISTER_CHECKER

#define REGISTER_CHECKER | ( |  | name,
|  |  | trackingRequired
| ) |  |

Value:
void ento::register##name##Checker(CheckerManager &mgr) { \
NullabilityChecker *checker = mgr.registerChecker<NullabilityChecker>(); \
checker->Filter.Check##name = true; \
checker->Filter.CheckName##name = mgr.getCurrentCheckName(); \
checker->NeedTracking = checker->NeedTracking || trackingRequired; \
checker->NoDiagnoseCallsToSystemHeaders = \
checker->NoDiagnoseCallsToSystemHeaders || \
mgr.getAnalyzerOptions().getCheckerBooleanOption( \
"NoDiagnoseCallsToSystemHeaders", false, checker, true); \
}

Definition at line 1195 of file NullabilityChecker.cpp.

## Enumeration Type Documentation

## ◆ ErrorKind

enum ErrorKind : int
| strong

Definition at line 71 of file NullabilityChecker.cpp.

## Function Documentation

## ◆ checkInvariantViolation()

static bool checkInvariantViolation | ( | ProgramStateRef | State,
|  | ExplodedNode * | N,
|  | CheckerContext & | C
| ) |  |
| static

Definition at line 407 of file NullabilityChecker.cpp.

References checkParamsForPreconditionViolation(), checkSelfIvarsForInvariantViolation(), clang::tooling::Filter, clang::LocationContext::getDecl(), clang::ento::Nullable, and State.

## ◆ checkParamsForPreconditionViolation()

static bool checkParamsForPreconditionViolation | ( | ArrayRef< ParmVarDecl *> | Params,
|  | ProgramStateRef | State,
|  | const LocationContext * | LocCtxt
| ) |  |
| static

Definition at line 360 of file NullabilityChecker.cpp.

References checkValueAtLValForInvariantViolation().

Referenced by checkInvariantViolation().

## ◆ checkSelfIvarsForInvariantViolation()

static bool checkSelfIvarsForInvariantViolation | ( | ProgramStateRef | State,
|  | const LocationContext * | LocCtxt
| ) |  |
| static

Definition at line 377 of file NullabilityChecker.cpp.

References checkValueAtLValForInvariantViolation(), clang::LocationContext::getDecl(), clang::ObjCObjectPointerType::getInterfaceDecl(), clang::LocationContext::getSelfDecl(), clang::ValueDecl::getType(), and clang::ObjCInterfaceDecl::ivars().

Referenced by checkInvariantViolation().

## ◆ checkValueAtLValForInvariantViolation()

static bool checkValueAtLValForInvariantViolation | ( | ProgramStateRef | State,
|  | SVal | LV,
|  | QualType | T
| ) |  |
| static

Returns true when the value stored at the given location has been constrained to null after being passed through an object of nonnnull type.

Definition at line 334 of file NullabilityChecker.cpp.

References clang::ento::getNullabilityAnnotation(), getNullConstraint(), and clang::ento::Nonnull.

Referenced by checkParamsForPreconditionViolation(), and checkSelfIvarsForInvariantViolation().

## ◆ getNullConstraint()

static NullConstraint getNullConstraint | ( | DefinedOrUnknownSVal | Val,
|  | ProgramStateRef | State
| ) |  |
| static

Definition at line 263 of file NullabilityChecker.cpp.

References State, and clang::prec::Unknown.

Referenced by checkValueAtLValForInvariantViolation(), and getReceiverNullability().

## ◆ getReceiverNullability()

static Nullability getReceiverNullability | ( | const ObjCMethodCall & | M,
|  | ProgramStateRef | State
| ) |  |
| static

Definition at line 787 of file NullabilityChecker.cpp.

References clang::ObjCMethodCall::getDecl(), getNullConstraint(), clang::ObjCMethodCall::getReceiverSVal(), clang::Type::isAnyPointerType(), clang::ObjCMethodCall::isReceiverSelfOrSuper(), clang::ento::Nonnull, State, and clang::ento::Unspecified.

## ◆ isARCNilInitializedLocal()

static bool isARCNilInitializedLocal | ( | CheckerContext & | C,
|  | const Stmt * | S
| ) |  |
| static

Returns true if.

Parameters

  S | is a DeclStmt for a local variable that ObjC automated reference counting initialized with zero.

Definition at line 1014 of file NullabilityChecker.cpp.

## ◆ lookThroughImplicitCasts()

static const Expr* lookThroughImplicitCasts | ( | const Expr * | E | ) |
| static

Find the outermost subexpression of E that is not an implicit cast.

This looks through the implicit casts to _Nonnull that ARC adds to return expressions of ObjC types when the return type of the function or method is non-null but the express is not.

Definition at line 513 of file NullabilityChecker.cpp.

## ◆ matchValueExprForBind()

static const Expr* matchValueExprForBind | ( | const Stmt * | S | ) |
| static

For a given statement performing a bind, attempt to syntactically match the expression resulting in the bound value.

Definition at line 990 of file NullabilityChecker.cpp.

## ◆ REGISTER_MAP_WITH_PROGRAMSTATE()

REGISTER_MAP_WITH_PROGRAMSTATE | ( | NullabilityMap | ,
|  | const MemRegion * | ,
|  | NullabilityState |
| ) |  |

Definition at line 232 of file NullabilityChecker.cpp.