22 using namespace clang;
27 class AnalysisOrderChecker
28 :
public Checker<check::PreStmt<CastExpr>,
29 check::PostStmt<CastExpr>,
30 check::PreStmt<ArraySubscriptExpr>,
31 check::PostStmt<ArraySubscriptExpr>,
33 check::RegionChanges> {
34 bool isCallbackEnabled(
AnalyzerOptions &Opts, StringRef CallbackName)
const {
39 bool isCallbackEnabled(
CheckerContext &C, StringRef CallbackName)
const {
41 return isCallbackEnabled(Opts, CallbackName);
46 ->getAnalysisManager().getAnalyzerOptions();
47 return isCallbackEnabled(Opts, CallbackName);
52 if (isCallbackEnabled(C,
"PreStmtCastExpr"))
58 if (isCallbackEnabled(C,
"PostStmtCastExpr"))
65 if (isCallbackEnabled(C,
"PreStmtArraySubscriptExpr"))
66 llvm::errs() <<
"PreStmt<ArraySubscriptExpr>\n";
71 if (isCallbackEnabled(C,
"PostStmtArraySubscriptExpr"))
72 llvm::errs() <<
"PostStmt<ArraySubscriptExpr>\n";
76 if (isCallbackEnabled(C,
"Bind"))
77 llvm::errs() <<
"Bind\n";
86 if (isCallbackEnabled(State,
"RegionChanges"))
87 llvm::errs() <<
"RegionChanges\n";
Stmt - This represents one statement.
AnalysisManager & getAnalysisManager()
const char * getCastKindName() const
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
AnalyzerOptions & getAnalyzerOptions() override
bool getBooleanOption(StringRef Name, bool DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false)
Interprets an option's string value as a boolean.
CHECKER * registerChecker()
Used to register checkers.
SVal - This represents a symbolic expression, which can be either an L-value or an R-value...
Dataflow Directional Tag Classes.
Represents an abstract call to a function or method along a particular path.
ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.