clang
6.0.0
|
#include "ClangSACheckers.h"
#include "SelectorExtras.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/StmtObjC.h"
#include "clang/Analysis/DomainSpecific/CocoaConventions.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/ExplodedGraph.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/Support/raw_ostream.h"
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 } |
enum CFNumberType |
Definition at line 351 of file BasicObjCFoundationChecks.cpp.
enum FoundationClass |
Enumerator | |
---|---|
FC_None | |
FC_NSArray | |
FC_NSDictionary | |
FC_NSEnumerator | |
FC_NSNull | |
FC_NSOrderedSet | |
FC_NSSet | |
FC_NSString |
Definition at line 58 of file BasicObjCFoundationChecks.cpp.
|
static |
If the fist block edge is a back edge, we are reentering the loop.
Definition at line 986 of file BasicObjCFoundationChecks.cpp.
References clang::ProgramPoint::getAs(), clang::ento::ExplodedNode::getLocation(), and P.
|
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 943 of file BasicObjCFoundationChecks.cpp.
References clang::ento::SValBuilder::evalBinOp(), clang::ento::SVal::getAs(), clang::ento::SValBuilder::getConditionType(), clang::ento::CheckerContext::getSValBuilder(), clang::ento::SValBuilder::makeIntVal(), and State.
Referenced by assumeCollectionNonEmpty().
|
static |
Definition at line 974 of file BasicObjCFoundationChecks.cpp.
References assumeCollectionNonEmpty(), clang::ObjCForCollectionStmt::getCollection(), and clang::ento::CheckerContext::getLocationContext().
|
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 884 of file BasicObjCFoundationChecks.cpp.
References clang::ento::SVal::getAs(), clang::ObjCForCollectionStmt::getCollection(), clang::ento::CheckerContext::getSVal(), and State.
|
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 909 of file BasicObjCFoundationChecks.cpp.
References clang::ento::SVal::castAs(), clang::ObjCForCollectionStmt::getCollection(), clang::ObjCForCollectionStmt::getElement(), clang::VarDecl::getInit(), clang::ento::CheckerContext::getLocationContext(), clang::Expr::getType(), isKnownNonNilCollectionType(), and State.
|
static |
Definition at line 69 of file BasicObjCFoundationChecks.cpp.
References FC_None, FC_NSArray, FC_NSDictionary, FC_NSEnumerator, FC_NSNull, FC_NSOrderedSet, FC_NSSet, FC_NSString, clang::NamedDecl::getIdentifier(), clang::IdentifierInfo::getName(), and clang::ObjCInterfaceDecl::getSuperClass().
Referenced by getMethodReceiverIfKnownImmutable(), and isKnownNonNilCollectionType().
|
static |
Definition at line 370 of file BasicObjCFoundationChecks.cpp.
References clang::ento::CheckerContext::addTransition(), clang::ento::objc_retain::Autorelease, clang::ASTContext::CharTy, clang::ASTContext::DoubleTy, clang::ento::CheckerContext::emitReport(), clang::ento::SValBuilder::evalEQ(), clang::ASTContext::FloatTy, clang::ento::CheckerContext::generateErrorNode(), clang::ento::CheckerContext::generateNonFatalErrorNode(), clang::IdentifierTable::get(), clang::CallExpr::getArg(), clang::ento::SVal::getAs(), clang::ento::CheckerContext::getASTContext(), clang::ento::CheckerContext::getCalleeDecl(), clang::ASTContext::getCanonicalType(), clang::NamedDecl::getIdentifier(), clang::ento::CheckerContext::getLocationContext(), clang::GetNullarySelector(), clang::CallExpr::getNumArgs(), clang::ObjCMethodCall::getReceiverInterface(), clang::Stmt::getSourceRange(), clang::ento::CheckerContext::getState(), clang::ento::CheckerContext::getSValBuilder(), clang::Expr::getType(), clang::ASTContext::getTypeSize(), clang::ento::TypedValueRegion::getValueType(), clang::ASTContext::Idents, clang::ASTContext::IntTy, clang::ObjCMethodCall::isInstanceMessage(), clang::Type::isIntegralOrEnumerationType(), kCFNumberCFIndexType, kCFNumberCGFloatType, kCFNumberCharType, kCFNumberDoubleType, kCFNumberFloatType, kCFNumberIntType, kCFNumberLongLongType, kCFNumberLongType, kCFNumberNSIntegerType, kCFNumberShortType, clang::ASTContext::LongLongTy, clang::ASTContext::LongTy, clang::ento::objc_retain::MakeCollectable, clang::ento::SValBuilder::makeZeroVal(), clang::ASTContext::ShortTy, clang::CodeGen::state, clang::T, and clang::ento::bugreporter::trackNullOrUndefValue().
Definition at line 1083 of file BasicObjCFoundationChecks.cpp.
References FC_None, FC_NSArray, FC_NSDictionary, FC_NSEnumerator, FC_NSNull, FC_NSOrderedSet, FC_NSSet, FC_NSString, findKnownClass(), clang::ento::SVal::getAsSymbol(), clang::ObjCMethodDecl::getClassInterface(), clang::ObjCMethodCall::getDecl(), clang::Decl::getDeclContext(), clang::ObjCMethodCall::getOriginExpr(), clang::ObjCMessageExpr::getReceiverInterface(), clang::ObjCMethodCall::getReceiverSVal(), and State.
|
static |
Definition at line 52 of file BasicObjCFoundationChecks.cpp.
References clang::ObjCMethodCall::getReceiverInterface().
Definition at line 859 of file BasicObjCFoundationChecks.cpp.
References FC_NSArray, FC_NSDictionary, FC_NSEnumerator, FC_NSOrderedSet, FC_NSSet, findKnownClass(), clang::Type::getAs(), and clang::ObjCObjectPointerType::getInterfaceDecl().
Referenced by checkElementNonNil().