clang
6.0.0
|
#include "clang/StaticAnalyzer/Core/CheckerManager.h"
Definition at line 103 of file CheckerManager.h.
typedef CheckerFn<void (CheckerContext &)> clang::ento::CheckerManager::CheckBeginFunctionFunc |
Definition at line 433 of file CheckerManager.h.
typedef CheckerFn<void (const SVal &location, const SVal &val, const Stmt *S, CheckerContext &)> clang::ento::CheckerManager::CheckBindFunc |
Definition at line 427 of file CheckerManager.h.
typedef CheckerFn<void (const Stmt *, CheckerContext &)> clang::ento::CheckerManager::CheckBranchConditionFunc |
Definition at line 439 of file CheckerManager.h.
typedef CheckerFn<void (const CallEvent &, CheckerContext &)> clang::ento::CheckerManager::CheckCallFunc |
Definition at line 418 of file CheckerManager.h.
typedef CheckerFn<void (SymbolReaper &, CheckerContext &)> clang::ento::CheckerManager::CheckDeadSymbolsFunc |
Definition at line 442 of file CheckerManager.h.
typedef CheckerFn<void (const Decl *, AnalysisManager&, BugReporter &)> clang::ento::CheckerManager::CheckDeclFunc |
Definition at line 401 of file CheckerManager.h.
typedef CheckerFn<void (ExplodedGraph &, BugReporter &, ExprEngine &)> clang::ento::CheckerManager::CheckEndAnalysisFunc |
Definition at line 430 of file CheckerManager.h.
typedef CheckerFn<void (CheckerContext &)> clang::ento::CheckerManager::CheckEndFunctionFunc |
Definition at line 436 of file CheckerManager.h.
typedef CheckerFn<void (const TranslationUnitDecl *, AnalysisManager&, BugReporter &)> clang::ento::CheckerManager::CheckEndOfTranslationUnit |
Definition at line 470 of file CheckerManager.h.
typedef CheckerFn<void ()> clang::ento::CheckerManager::CheckerDtor |
Definition at line 126 of file CheckerManager.h.
Definition at line 124 of file CheckerManager.h.
typedef const void* clang::ento::CheckerManager::CheckerTag |
Definition at line 125 of file CheckerManager.h.
typedef CheckerFn<void (const void *event)> clang::ento::CheckerManager::CheckEventFunc |
Definition at line 518 of file CheckerManager.h.
typedef CheckerFn<void (ProgramStateRef,SymbolReaper &)> clang::ento::CheckerManager::CheckLiveSymbolsFunc |
Definition at line 444 of file CheckerManager.h.
typedef CheckerFn<void (const SVal &location, bool isLoad, const Stmt *S, CheckerContext &)> clang::ento::CheckerManager::CheckLocationFunc |
Definition at line 423 of file CheckerManager.h.
typedef CheckerFn<void (const ObjCMethodCall &, CheckerContext &)> clang::ento::CheckerManager::CheckObjCMessageFunc |
Definition at line 415 of file CheckerManager.h.
typedef CheckerFn<ProgramStateRef (ProgramStateRef, const InvalidatedSymbols &Escaped, const CallEvent *Call, PointerEscapeKind Kind, RegionAndSymbolInvalidationTraits *ITraits)> clang::ento::CheckerManager::CheckPointerEscapeFunc |
Definition at line 459 of file CheckerManager.h.
typedef CheckerFn<ProgramStateRef (ProgramStateRef, const InvalidatedSymbols *symbols, ArrayRef<const MemRegion *> ExplicitRegions, ArrayRef<const MemRegion *> Regions, const LocationContext *LCtx, const CallEvent *Call)> clang::ento::CheckerManager::CheckRegionChangesFunc |
Definition at line 452 of file CheckerManager.h.
typedef CheckerFn<void (const Stmt *, CheckerContext &)> clang::ento::CheckerManager::CheckStmtFunc |
Definition at line 412 of file CheckerManager.h.
typedef CheckerFn<ProgramStateRef (ProgramStateRef, const SVal &cond, bool assumption)> clang::ento::CheckerManager::EvalAssumeFunc |
Definition at line 463 of file CheckerManager.h.
typedef CheckerFn<bool (const CallExpr *, CheckerContext &)> clang::ento::CheckerManager::EvalCallFunc |
Definition at line 466 of file CheckerManager.h.
typedef void* clang::ento::CheckerManager::EventTag |
Definition at line 517 of file CheckerManager.h.
Definition at line 403 of file CheckerManager.h.
Definition at line 472 of file CheckerManager.h.
|
inline |
Definition at line 109 of file CheckerManager.h.
CheckerManager::~CheckerManager | ( | ) |
Definition at line 771 of file CheckerManager.cpp.
|
inline |
Definition at line 533 of file CheckerManager.h.
Referenced by clang::ento::EventDispatcher< EVENT >::dispatchEvent().
|
inline |
Definition at line 527 of file CheckerManager.h.
Referenced by clang::ento::EventDispatcher< EVENT >::_register().
void CheckerManager::_registerForBeginFunction | ( | CheckEndFunctionFunc | checkfn | ) |
Definition at line 701 of file CheckerManager.cpp.
Referenced by clang::ento::check::BeginFunction::_register().
void CheckerManager::_registerForBind | ( | CheckBindFunc | checkfn | ) |
Definition at line 693 of file CheckerManager.cpp.
Referenced by clang::ento::check::Bind::_register().
void CheckerManager::_registerForBody | ( | CheckDeclFunc | checkfn | ) |
Definition at line 651 of file CheckerManager.cpp.
Referenced by clang::ento::check::ASTCodeBody::_register().
void CheckerManager::_registerForBranchCondition | ( | CheckBranchConditionFunc | checkfn | ) |
Definition at line 709 of file CheckerManager.cpp.
Referenced by clang::ento::check::BranchCondition::_register().
void CheckerManager::_registerForConstPointerEscape | ( | CheckPointerEscapeFunc | checkfn | ) |
Definition at line 730 of file CheckerManager.cpp.
void CheckerManager::_registerForDeadSymbols | ( | CheckDeadSymbolsFunc | checkfn | ) |
Definition at line 718 of file CheckerManager.cpp.
Referenced by clang::ento::check::DeadSymbols::_register().
void CheckerManager::_registerForDecl | ( | CheckDeclFunc | checkfn, |
HandlesDeclFunc | isForDeclFn | ||
) |
Definition at line 645 of file CheckerManager.cpp.
Referenced by clang::ento::check::ASTDecl< DECL >::_register().
void CheckerManager::_registerForEndAnalysis | ( | CheckEndAnalysisFunc | checkfn | ) |
Definition at line 697 of file CheckerManager.cpp.
Referenced by clang::ento::check::EndAnalysis::_register().
void CheckerManager::_registerForEndFunction | ( | CheckEndFunctionFunc | checkfn | ) |
Definition at line 705 of file CheckerManager.cpp.
Referenced by clang::ento::check::EndFunction::_register().
void CheckerManager::_registerForEndOfTranslationUnit | ( | CheckEndOfTranslationUnit | checkfn | ) |
Definition at line 743 of file CheckerManager.cpp.
Referenced by clang::ento::check::EndOfTranslationUnit::_register().
void CheckerManager::_registerForEvalAssume | ( | EvalAssumeFunc | checkfn | ) |
Definition at line 735 of file CheckerManager.cpp.
Referenced by clang::ento::eval::Assume::_register().
void CheckerManager::_registerForEvalCall | ( | EvalCallFunc | checkfn | ) |
Definition at line 739 of file CheckerManager.cpp.
Referenced by clang::ento::eval::Call::_register().
void CheckerManager::_registerForLiveSymbols | ( | CheckLiveSymbolsFunc | checkfn | ) |
Definition at line 714 of file CheckerManager.cpp.
Referenced by clang::ento::check::LiveSymbols::_register().
void CheckerManager::_registerForLocation | ( | CheckLocationFunc | checkfn | ) |
Definition at line 689 of file CheckerManager.cpp.
Referenced by clang::ento::check::Location::_register().
void CheckerManager::_registerForObjCMessageNil | ( | CheckObjCMessageFunc | checkfn | ) |
Definition at line 674 of file CheckerManager.cpp.
Referenced by clang::ento::check::ObjCMessageNil::_register().
void CheckerManager::_registerForPointerEscape | ( | CheckPointerEscapeFunc | checkfn | ) |
Definition at line 726 of file CheckerManager.cpp.
Referenced by clang::ento::check::PointerEscape::_register(), and clang::ento::check::ConstPointerEscape::_register().
void CheckerManager::_registerForPostCall | ( | CheckCallFunc | checkfn | ) |
Definition at line 685 of file CheckerManager.cpp.
Referenced by clang::ento::check::PostCall::_register().
void CheckerManager::_registerForPostObjCMessage | ( | CheckObjCMessageFunc | checkfn | ) |
Definition at line 678 of file CheckerManager.cpp.
Referenced by clang::ento::check::PostObjCMessage::_register().
void CheckerManager::_registerForPostStmt | ( | CheckStmtFunc | checkfn, |
HandlesStmtFunc | isForStmtFn | ||
) |
Definition at line 664 of file CheckerManager.cpp.
Referenced by clang::ento::check::PostStmt< STMT >::_register().
void CheckerManager::_registerForPreCall | ( | CheckCallFunc | checkfn | ) |
Definition at line 682 of file CheckerManager.cpp.
Referenced by clang::ento::check::PreCall::_register().
void CheckerManager::_registerForPreObjCMessage | ( | CheckObjCMessageFunc | checkfn | ) |
Definition at line 670 of file CheckerManager.cpp.
Referenced by clang::ento::check::PreObjCMessage::_register().
void CheckerManager::_registerForPreStmt | ( | CheckStmtFunc | checkfn, |
HandlesStmtFunc | isForStmtFn | ||
) |
Definition at line 659 of file CheckerManager.cpp.
Referenced by clang::ento::check::PreStmt< ReturnStmt >::_register().
void CheckerManager::_registerForRegionChanges | ( | CheckRegionChangesFunc | checkfn | ) |
Definition at line 722 of file CheckerManager.cpp.
Referenced by clang::ento::check::RegionChanges::_register().
|
inline |
Definition at line 521 of file CheckerManager.h.
Referenced by clang::ento::check::Event< EVENT >::_register().
void CheckerManager::finishedCheckerRegistration | ( | ) |
Definition at line 42 of file CheckerManager.cpp.
|
inline |
Definition at line 122 of file CheckerManager.h.
Referenced by isVirtualCall().
|
inline |
Definition at line 115 of file CheckerManager.h.
|
inline |
Definition at line 121 of file CheckerManager.h.
bool CheckerManager::hasPathSensitiveCheckers | ( | ) | const |
Definition at line 24 of file CheckerManager.cpp.
|
inline |
Used to register checkers.
Definition at line 136 of file CheckerManager.h.
References CHECKER.
Referenced by addValue(), AttrFilter(), clang::ento::mpi::MPIChecker::checkMissingWaits(), emitBug(), hasDefinition(), IsCFError(), isIdenticalStmt(), isInitMessage(), and isVirtualCall().
|
inline |
Definition at line 151 of file CheckerManager.h.
References CHECKER.
void CheckerManager::runCheckersForBeginFunction | ( | ExplodedNodeSet & | Dst, |
const BlockEdge & | L, | ||
ExplodedNode * | Pred, | ||
ExprEngine & | Eng | ||
) |
Run checkers on beginning of function.
Definition at line 404 of file CheckerManager.cpp.
References expandGraphWithCheckers(), and clang::ento::ExplodedNodeSet::insert().
Referenced by clang::ento::ExprEngine::processBeginOfFunction().
void CheckerManager::runCheckersForBind | ( | ExplodedNodeSet & | Dst, |
const ExplodedNodeSet & | Src, | ||
SVal | location, | ||
SVal | val, | ||
const Stmt * | S, | ||
ExprEngine & | Eng, | ||
const ProgramPoint & | PP | ||
) |
Run checkers for binding of a value to a location.
Definition at line 364 of file CheckerManager.cpp.
Referenced by clang::ento::ExprEngine::evalBind().
void CheckerManager::runCheckersForBranchCondition | ( | const Stmt * | condition, |
ExplodedNodeSet & | Dst, | ||
ExplodedNode * | Pred, | ||
ExprEngine & | Eng | ||
) |
Run checkers for branch condition.
Definition at line 462 of file CheckerManager.cpp.
References expandGraphWithCheckers(), and clang::ento::ExplodedNodeSet::insert().
Referenced by clang::ento::ExprEngine::processBranch().
void CheckerManager::runCheckersForCallEvent | ( | bool | isPreVisit, |
ExplodedNodeSet & | Dst, | ||
const ExplodedNodeSet & | Src, | ||
const CallEvent & | Call, | ||
ExprEngine & | Eng, | ||
bool | wasInlined = false |
||
) |
Run checkers for visiting obj-c messages.
Run checkers for visiting an abstract call event.
Definition at line 275 of file CheckerManager.cpp.
References expandGraphWithCheckers(), clang::ento::ExplodedNode::getLocationContext(), clang::ProgramPoint::getProgramPoint(), clang::ProgramPoint::PreLoadKind, and clang::ProgramPoint::PreStoreKind.
void CheckerManager::runCheckersForDeadSymbols | ( | ExplodedNodeSet & | Dst, |
const ExplodedNodeSet & | Src, | ||
SymbolReaper & | SymReaper, | ||
const Stmt * | S, | ||
ExprEngine & | Eng, | ||
ProgramPoint::Kind | K | ||
) |
Run checkers for dead symbols.
Notifies checkers when symbols become dead. For example, this allows checkers to aggressively clean up/reduce the checker state and produce precise diagnostics.
Definition at line 511 of file CheckerManager.cpp.
Referenced by clang::ento::ExprEngine::removeDead().
void CheckerManager::runCheckersForEndAnalysis | ( | ExplodedGraph & | G, |
BugReporter & | BR, | ||
ExprEngine & | Eng | ||
) |
Run checkers for end of analysis.
Definition at line 373 of file CheckerManager.cpp.
References clang::ProgramPoint::withTag().
Referenced by clang::ento::ExprEngine::processEndWorklist().
void CheckerManager::runCheckersForEndFunction | ( | NodeBuilderContext & | BC, |
ExplodedNodeSet & | Dst, | ||
ExplodedNode * | Pred, | ||
ExprEngine & | Eng | ||
) |
Run checkers on end of function.
Run checkers for end of path.
Definition at line 417 of file CheckerManager.cpp.
References clang::ento::NodeBuilderContext::Block, and clang::ento::ExplodedNode::getLocationContext().
ProgramStateRef CheckerManager::runCheckersForEvalAssume | ( | ProgramStateRef | state, |
SVal | Cond, | ||
bool | Assumption | ||
) |
Run checkers for handling assumptions on symbolic values.
Definition at line 564 of file CheckerManager.cpp.
References clang::CodeGen::state.
Referenced by clang::ento::ExprEngine::processAssume().
void CheckerManager::runCheckersForEvalCall | ( | ExplodedNodeSet & | Dst, |
const ExplodedNodeSet & | Src, | ||
const CallEvent & | Call, | ||
ExprEngine & | Eng | ||
) |
Run checkers for evaluating a call.
Warning: Currently, the CallEvent MUST come from a CallExpr!
Only one checker will evaluate the call.
Definition at line 578 of file CheckerManager.cpp.
References clang::ento::ExplodedNodeSet::begin(), clang::ento::ExprEngine::defaultEvalCall(), clang::ento::ExplodedNodeSet::end(), clang::ento::ExprEngine::getBuilderContext(), clang::ento::ExplodedNode::getLocationContext(), clang::ento::CallEvent::getOriginExpr(), clang::ProgramPoint::getProgramPoint(), clang::ento::ExplodedNodeSet::insert(), and clang::ProgramPoint::PostStmtKind.
Referenced by clang::ento::ExprEngine::evalCall().
void CheckerManager::runCheckersForLiveSymbols | ( | ProgramStateRef | state, |
SymbolReaper & | SymReaper | ||
) |
Run checkers for live symbols.
Allows modifying SymbolReaper object. For example, checkers can explicitly register symbols of interest as live. These symbols will not be marked dead and removed.
Definition at line 473 of file CheckerManager.cpp.
Referenced by clang::ento::ExprEngine::removeDead().
void CheckerManager::runCheckersForLocation | ( | ExplodedNodeSet & | Dst, |
const ExplodedNodeSet & | Src, | ||
SVal | location, | ||
bool | isLoad, | ||
const Stmt * | NodeEx, | ||
const Stmt * | BoundEx, | ||
ExprEngine & | Eng | ||
) |
Run checkers for load/store of a location.
Definition at line 324 of file CheckerManager.cpp.
References expandGraphWithCheckers().
void CheckerManager::runCheckersForObjCMessage | ( | ObjCMessageVisitKind | visitKind, |
ExplodedNodeSet & | Dst, | ||
const ExplodedNodeSet & | Src, | ||
const ObjCMethodCall & | msg, | ||
ExprEngine & | Eng, | ||
bool | wasInlined = false |
||
) |
Run checkers for visiting obj-c messages.
Definition at line 221 of file CheckerManager.cpp.
References clang::ento::CallEvent::cloneWithState(), expandGraphWithCheckers(), clang::ento::CallEvent::getProgramPoint(), clang::ento::ExplodedNode::getState(), clang::ento::MessageNil, clang::ento::Post, and clang::ento::Pre.
|
inline |
Run checkers for visiting an obj-c message to nil.
Definition at line 233 of file CheckerManager.h.
References clang::ento::MessageNil.
Referenced by clang::ento::ExprEngine::VisitObjCMessage().
ProgramStateRef CheckerManager::runCheckersForPointerEscape | ( | ProgramStateRef | State, |
const InvalidatedSymbols & | Escaped, | ||
const CallEvent * | Call, | ||
PointerEscapeKind | Kind, | ||
RegionAndSymbolInvalidationTraits * | ITraits | ||
) |
Run checkers when pointers escape.
Run checkers to process symbol escape event.
This notifies the checkers about pointer escape, which occurs whenever the analyzer cannot track the symbol any more. For example, as a result of assigning a pointer into a global or when it's passed to a function call the analyzer cannot model.
State | The state at the point of escape. |
Escaped | The list of escaped symbols. |
Call | The corresponding CallEvent, if the symbols escape as parameters to the given call. |
Kind | The reason of pointer escape. |
ITraits | Information about invalidation for a particular region/symbol. |
Definition at line 543 of file CheckerManager.cpp.
References clang::ento::PSK_DirectEscapeOnCall, clang::ento::PSK_IndirectEscapeOnCall, and State.
Referenced by clang::ento::ExprEngine::notifyCheckersOfPointerEscape(), and clang::ento::ExprEngine::processPointerEscapedOnBind().
|
inline |
Run checkers for post-visiting obj-c messages.
Definition at line 256 of file CheckerManager.h.
References clang::CodeGen::state, and State.
Referenced by clang::ento::ExprEngine::evalCall(), and clang::ento::ExprEngine::VisitObjCMessage().
|
inline |
Run checkers for post-visiting obj-c messages.
Definition at line 223 of file CheckerManager.h.
References clang::ento::Post.
Referenced by clang::ento::ExprEngine::VisitObjCMessage().
|
inline |
Run checkers for post-visiting Stmts.
The notification is performed for every explored CFGElement, which does not include the control flow statements such as IfStmt.
Definition at line 200 of file CheckerManager.h.
Referenced by clang::ento::ExprEngine::VisitArraySubscriptExpr(), clang::ento::ExprEngine::VisitLambdaExpr(), and clang::ento::ExprEngine::VisitLvalObjCIvarRefExpr().
|
inline |
Run checkers for pre-visiting obj-c messages.
Definition at line 250 of file CheckerManager.h.
Referenced by clang::ento::ExprEngine::evalCall(), clang::ento::ExprEngine::VisitCXXNewAllocatorCall(), and clang::ento::ExprEngine::VisitObjCMessage().
|
inline |
Run checkers for pre-visiting obj-c messages.
Definition at line 215 of file CheckerManager.h.
References clang::ento::Pre.
Referenced by clang::ento::ExprEngine::VisitObjCMessage().
|
inline |
Run checkers for pre-visiting Stmts.
The notification is performed for every explored CFGElement, which does not include the control flow statements such as IfStmt.
Definition at line 187 of file CheckerManager.h.
Referenced by clang::ento::ExprEngine::VisitArraySubscriptExpr(), clang::ento::ExprEngine::VisitAtomicExpr(), clang::ento::ExprEngine::VisitBinaryOperator(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCast(), clang::ento::ExprEngine::VisitCXXConstructExpr(), clang::ento::ExprEngine::VisitDeclStmt(), clang::ento::ExprEngine::VisitMemberExpr(), clang::ento::ExprEngine::VisitReturnStmt(), clang::ento::ExprEngine::VisitUnaryExprOrTypeTraitExpr(), and clang::ento::ExprEngine::VisitUnaryOperator().
void CheckerManager::runCheckersForPrintState | ( | raw_ostream & | Out, |
ProgramStateRef | State, | ||
const char * | NL, | ||
const char * | Sep | ||
) |
Run checkers for debug-printing a ProgramState.
Unlike most other callbacks, any checker can simply implement the virtual method CheckerBase::printState if it has custom data to print.
Out | The output stream |
State | The state being printed |
NL | The preferred representation of a newline. |
Sep | The preferred separator between different kinds of data. |
Definition at line 633 of file CheckerManager.cpp.
Referenced by clang::ento::ExprEngine::printState().
ProgramStateRef CheckerManager::runCheckersForRegionChanges | ( | ProgramStateRef | state, |
const InvalidatedSymbols * | invalidated, | ||
ArrayRef< const MemRegion *> | ExplicitRegions, | ||
ArrayRef< const MemRegion *> | Regions, | ||
const LocationContext * | LCtx, | ||
const CallEvent * | Call | ||
) |
Run checkers for region changes.
This corresponds to the check::RegionChanges callback.
state | The current program state. |
invalidated | A set of all symbols potentially touched by the change. |
ExplicitRegions | The regions explicitly requested for invalidation. For example, in the case of a function call, these would be arguments. |
Regions | The transitive closure of accessible regions, i.e. all regions that may have been touched by this change. |
Call | The call expression wrapper if the regions are invalidated by a call. |
Definition at line 523 of file CheckerManager.cpp.
References clang::CodeGen::state.
Referenced by clang::ento::ExprEngine::processRegionChanges().
void CheckerManager::runCheckersForStmt | ( | bool | isPreVisit, |
ExplodedNodeSet & | Dst, | ||
const ExplodedNodeSet & | Src, | ||
const Stmt * | S, | ||
ExprEngine & | Eng, | ||
bool | wasInlined = false |
||
) |
Run checkers for visiting Stmts.
Definition at line 166 of file CheckerManager.cpp.
void CheckerManager::runCheckersOnASTBody | ( | const Decl * | D, |
AnalysisManager & | mgr, | ||
BugReporter & | BR | ||
) |
Run checkers handling Decls containing a Stmt body.
Definition at line 81 of file CheckerManager.cpp.
References clang::Decl::hasBody().
void CheckerManager::runCheckersOnASTDecl | ( | const Decl * | D, |
AnalysisManager & | mgr, | ||
BugReporter & | BR | ||
) |
Run checkers handling Decls.
Definition at line 56 of file CheckerManager.cpp.
References clang::Decl::getKind().
void CheckerManager::runCheckersOnEndOfTranslationUnit | ( | const TranslationUnitDecl * | TU, |
AnalysisManager & | mgr, | ||
BugReporter & | BR | ||
) |
Run checkers for the entire Translation Unit.
Definition at line 625 of file CheckerManager.cpp.
|
inline |
Definition at line 114 of file CheckerManager.h.
Referenced by clang::ento::CheckerRegistry::initializeManager().