Path: blob/main/contrib/llvm-project/clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp
35293 views
#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"1#include "clang/StaticAnalyzer/Core/Checker.h"2#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"3#include "clang/StaticAnalyzer/Frontend/CheckerRegistry.h"45using namespace clang;6using namespace ento;78namespace {9struct MyChecker : public Checker<check::BeginFunction> {10void checkBeginFunction(CheckerContext &Ctx) const {}11};1213void registerMyChecker(CheckerManager &Mgr) {14MyChecker *Checker = Mgr.registerChecker<MyChecker>();15llvm::outs() << "Example option is set to "16<< (Mgr.getAnalyzerOptions().getCheckerBooleanOption(17Checker, "ExampleOption")18? "true"19: "false")20<< '\n';21}2223bool shouldRegisterMyChecker(const CheckerManager &mgr) { return true; }2425} // end anonymous namespace2627// Register plugin!28extern "C" void clang_registerCheckers(CheckerRegistry ®istry) {29registry.addChecker(registerMyChecker, shouldRegisterMyChecker,30"example.MyChecker", "Example Description",31"example.mychecker.documentation.nonexistent.html",32/*isHidden*/false);3334registry.addCheckerOption(/*OptionType*/ "bool",35/*CheckerFullName*/ "example.MyChecker",36/*OptionName*/ "ExampleOption",37/*DefaultValStr*/ "false",38/*Description*/ "This is an example checker opt.",39/*DevelopmentStage*/ "released");40}4142extern "C" const char clang_analyzerAPIVersionString[] =43CLANG_ANALYZER_API_VERSION_STRING;444546