#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
#include "clang/AST/ParentMap.h"
#include "clang/AST/StmtObjC.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 "llvm/Support/raw_ostream.h"
usingnamespaceclang;
usingnamespaceento;
namespace {
class TraversalDumper : public Checker< check::BranchCondition,
check::BeginFunction,
check::EndFunction > { … };
}
void TraversalDumper::checkBranchCondition(const Stmt *Condition,
CheckerContext &C) const { … }
void TraversalDumper::checkBeginFunction(CheckerContext &C) const { … }
void TraversalDumper::checkEndFunction(const ReturnStmt *RS,
CheckerContext &C) const { … }
void ento::registerTraversalDumper(CheckerManager &mgr) { … }
bool ento::shouldRegisterTraversalDumper(const CheckerManager &mgr) { … }
namespace {
class CallDumper : public Checker< check::PreCall,
check::PostCall > { … };
}
void CallDumper::checkPreCall(const CallEvent &Call, CheckerContext &C) const { … }
void CallDumper::checkPostCall(const CallEvent &Call, CheckerContext &C) const { … }
void ento::registerCallDumper(CheckerManager &mgr) { … }
bool ento::shouldRegisterCallDumper(const CheckerManager &mgr) { … }