clang 20.0.0git
Functions
ObjCSelfInitChecker.cpp File Reference
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
#include "clang/AST/ParentMap.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/CallEvent.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h"
#include "llvm/Support/raw_ostream.h"

Go to the source code of this file.

Functions

static bool shouldRunOnFunctionOrMethod (const NamedDecl *ND)
 
static bool isInitializationMethod (const ObjCMethodDecl *MD)
 
static bool isInitMessage (const ObjCMethodCall &Msg)
 
static bool isSelfVar (SVal location, CheckerContext &C)
 Returns true if the location is 'self'.
 
static SelfFlagEnum getSelfFlags (SVal val, ProgramStateRef state)
 A call receiving a reference to 'self' invalidates the object that 'self' contains.
 
static SelfFlagEnum getSelfFlags (SVal val, CheckerContext &C)
 
static void addSelfFlag (ProgramStateRef state, SVal val, SelfFlagEnum flag, CheckerContext &C)
 
static bool hasSelfFlag (SVal val, SelfFlagEnum flag, CheckerContext &C)
 
static bool isInvalidSelf (const Expr *E, CheckerContext &C)
 Returns true of the value of the expression is the object that 'self' points to and is an object that did not come from the result of calling an initializer.
 

Function Documentation

◆ addSelfFlag()

static void addSelfFlag ( ProgramStateRef  state,
SVal  val,
SelfFlagEnum  flag,
CheckerContext C 
)
static

◆ getSelfFlags() [1/2]

static SelfFlagEnum getSelfFlags ( SVal  val,
CheckerContext C 
)
static

Definition at line 113 of file ObjCSelfInitChecker.cpp.

References clang::C, and getSelfFlags().

◆ getSelfFlags() [2/2]

static SelfFlagEnum getSelfFlags ( SVal  val,
ProgramStateRef  state 
)
static

A call receiving a reference to 'self' invalidates the object that 'self' contains.

This keeps the "self flags" assigned to the 'self' object before the call so we can assign them to the new object that 'self' points to after the call.

Definition at line 106 of file ObjCSelfInitChecker.cpp.

Referenced by addSelfFlag(), getSelfFlags(), and hasSelfFlag().

◆ hasSelfFlag()

static bool hasSelfFlag ( SVal  val,
SelfFlagEnum  flag,
CheckerContext C 
)
static

Definition at line 127 of file ObjCSelfInitChecker.cpp.

References clang::C, and getSelfFlags().

Referenced by isInvalidSelf().

◆ isInitializationMethod()

static bool isInitializationMethod ( const ObjCMethodDecl MD)
static

◆ isInitMessage()

static bool isInitMessage ( const ObjCMethodCall Msg)
static

Definition at line 426 of file ObjCSelfInitChecker.cpp.

References clang::Call, and clang::OMF_init.

◆ isInvalidSelf()

static bool isInvalidSelf ( const Expr E,
CheckerContext C 
)
static

Returns true of the value of the expression is the object that 'self' points to and is an object that did not come from the result of calling an initializer.

Definition at line 134 of file ObjCSelfInitChecker.cpp.

References clang::C, E, and hasSelfFlag().

◆ isSelfVar()

static bool isSelfVar ( SVal  location,
CheckerContext C 
)
static

◆ shouldRunOnFunctionOrMethod()

static bool shouldRunOnFunctionOrMethod ( const NamedDecl ND)
static