clang: lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static const TypedValueRegion * getConstructedRegion (const CXXConstructorDecl *CtorDecl, CheckerContext &Context)
Returns the region that was constructed by CtorDecl, or nullptr if that isn't possible.
static bool willObjectBeAnalyzedLater (const CXXConstructorDecl *Ctor, CheckerContext &Context)
Checks whether the object constructed by Ctor will be analyzed later (e.g.
static bool shouldIgnoreRecord (const RecordDecl *RD, StringRef Pattern)
Checks whether RD contains a field with a name or type name that matches Pattern.
static bool hasUnguardedAccess (const FieldDecl *FD, ProgramStateRef State)
Checks syntactically whether it is possible to access FD from the record that contains it without a preceding assert (even if that access happens inside a method).
static void printTail (llvm::raw_ostream &Out, const FieldChainInfo::FieldChain L)
Prints every element except the last to Out.
static const Stmt * getMethodBody (const CXXMethodDecl *M)

getConstructedRegion()

getMethodBody()

hasUnguardedAccess()

Checks syntactically whether it is possible to access FD from the record that contains it without a preceding assert (even if that access happens inside a method).

This is mainly used for records that act like unions, like having multiple bit fields, with only a fraction being properly initialized. If these fields are properly guarded with asserts, this method returns false.

Since this check is done syntactically, this method could be inaccurate.

Definition at line 520 of file UninitializedObjectChecker.cpp.

References clang::ast_matchers::anyOf, clang::AS_public, clang::ast_matchers::callExpr, clang::ast_matchers::conditionalOperator, clang::ast_matchers::functionDecl, clang::Decl::getAccess(), getMethodBody(), clang::FieldDecl::getParent(), clang::ast_matchers::hasAnyName, clang::ast_matchers::hasDeclaration(), clang::ast_matchers::hasDescendant, clang::ast_matchers::ifStmt, clang::ast_matchers::match(), clang::ast_matchers::memberExpr, Parent, clang::ast_matchers::stmt, and clang::ast_matchers::switchStmt.

printTail()

shouldIgnoreRecord()

static bool shouldIgnoreRecord ( const RecordDecl * RD, StringRef Pattern ) static

willObjectBeAnalyzedLater()