clang 22.0.0git
BasicObjCFoundationChecks.cpp File Reference

Go to the source code of this file.

Enumerations

enum  FoundationClass {
  FC_None , FC_NSArray , FC_NSDictionary , FC_NSEnumerator ,
  FC_NSNull , FC_NSOrderedSet , FC_NSSet , FC_NSString
}
enum  CFNumberType {
  kCFNumberSInt8Type = 1 , kCFNumberSInt16Type = 2 , kCFNumberSInt32Type = 3 , kCFNumberSInt64Type = 4 ,
  kCFNumberFloat32Type = 5 , kCFNumberFloat64Type = 6 , kCFNumberCharType = 7 , kCFNumberShortType = 8 ,
  kCFNumberIntType = 9 , kCFNumberLongType = 10 , kCFNumberLongLongType = 11 , kCFNumberFloatType = 12 ,
  kCFNumberDoubleType = 13 , kCFNumberCFIndexType = 14 , kCFNumberNSIntegerType = 15 , kCFNumberCGFloatType = 16
}

Functions

static StringRef GetReceiverInterfaceName (const ObjCMethodCall &msg)
static FoundationClass findKnownClass (const ObjCInterfaceDecl *ID, bool IncludeSuperclasses=true)
static std::optional< uint64_t > GetCFNumberSize (ASTContext &Ctx, uint64_t i)
static bool isKnownNonNilCollectionType (QualType T)
static ProgramStateRef checkCollectionNonNil (CheckerContext &C, ProgramStateRef State, const ObjCForCollectionStmt *FCS)
 Assumes that the collection is non-nil.
static ProgramStateRef checkElementNonNil (CheckerContext &C, ProgramStateRef State, const ObjCForCollectionStmt *FCS)
 Assumes that the collection elements are non-nil.
static ProgramStateRef assumeCollectionNonEmpty (CheckerContext &C, ProgramStateRef State, SymbolRef CollectionS, bool Assumption)
 Returns NULL state if the collection is known to contain elements (or is known not to contain elements if the Assumption parameter is false.)
static ProgramStateRef assumeCollectionNonEmpty (CheckerContext &C, ProgramStateRef State, const ObjCForCollectionStmt *FCS, bool Assumption)
static bool alreadyExecutedAtLeastOneLoopIteration (const ExplodedNode *N, const ObjCForCollectionStmt *FCS)
 If the fist block edge is a back edge, we are reentering the loop.
static SymbolRef getMethodReceiverIfKnownImmutable (const CallEvent *Call)

Enumeration Type Documentation

◆ CFNumberType

Enumerator
kCFNumberSInt8Type 
kCFNumberSInt16Type 
kCFNumberSInt32Type 
kCFNumberSInt64Type 
kCFNumberFloat32Type 
kCFNumberFloat64Type 
kCFNumberCharType 
kCFNumberShortType 
kCFNumberIntType 
kCFNumberLongType 
kCFNumberLongLongType 
kCFNumberFloatType 
kCFNumberDoubleType 
kCFNumberCFIndexType 
kCFNumberNSIntegerType 
kCFNumberCGFloatType 

Definition at line 359 of file BasicObjCFoundationChecks.cpp.

◆ FoundationClass

Enumerator
FC_None 
FC_NSArray 
FC_NSDictionary 
FC_NSEnumerator 
FC_NSNull 
FC_NSOrderedSet 
FC_NSSet 
FC_NSString 

Definition at line 60 of file BasicObjCFoundationChecks.cpp.

Function Documentation

◆ alreadyExecutedAtLeastOneLoopIteration()

bool alreadyExecutedAtLeastOneLoopIteration ( const ExplodedNode * N,
const ObjCForCollectionStmt * FCS )
static

◆ assumeCollectionNonEmpty() [1/2]

ProgramStateRef assumeCollectionNonEmpty ( CheckerContext & C,
ProgramStateRef State,
const ObjCForCollectionStmt * FCS,
bool Assumption )
static

◆ assumeCollectionNonEmpty() [2/2]

ProgramStateRef assumeCollectionNonEmpty ( CheckerContext & C,
ProgramStateRef State,
SymbolRef CollectionS,
bool Assumption )
static

Returns NULL state if the collection is known to contain elements (or is known not to contain elements if the Assumption parameter is false.)

Definition at line 907 of file BasicObjCFoundationChecks.cpp.

References clang::C, clang::ento::SValBuilder::evalBinOp(), clang::ento::SVal::getAs(), clang::ento::SValBuilder::getConditionType(), and clang::ento::SValBuilder::makeIntVal().

Referenced by assumeCollectionNonEmpty().

◆ checkCollectionNonNil()

ProgramStateRef checkCollectionNonNil ( CheckerContext & C,
ProgramStateRef State,
const ObjCForCollectionStmt * FCS )
static

Assumes that the collection is non-nil.

If the collection is known to be nil, returns NULL to indicate an infeasible path.

Definition at line 847 of file BasicObjCFoundationChecks.cpp.

References clang::C, clang::ento::SVal::getAs(), and clang::ObjCForCollectionStmt::getCollection().

◆ checkElementNonNil()

ProgramStateRef checkElementNonNil ( CheckerContext & C,
ProgramStateRef State,
const ObjCForCollectionStmt * FCS )
static

Assumes that the collection elements are non-nil.

This only applies if the collection is one of those known not to contain nil values.

Definition at line 873 of file BasicObjCFoundationChecks.cpp.

References clang::C, clang::cast(), clang::ObjCForCollectionStmt::getCollection(), clang::ObjCForCollectionStmt::getElement(), clang::VarDecl::getInit(), clang::Expr::getType(), and isKnownNonNilCollectionType().

◆ findKnownClass()

◆ GetCFNumberSize()

◆ getMethodReceiverIfKnownImmutable()

◆ GetReceiverInterfaceName()

StringRef GetReceiverInterfaceName ( const ObjCMethodCall & msg)
static

◆ isKnownNonNilCollectionType()