diff options
Diffstat (limited to 'clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp')
| -rw-r--r-- | clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp | 44 | 
1 files changed, 44 insertions, 0 deletions
| diff --git a/clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp b/clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp new file mode 100644 index 000000000000..77de3630ae7e --- /dev/null +++ b/clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp @@ -0,0 +1,44 @@ +#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" +#include "clang/StaticAnalyzer/Core/Checker.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" +#include "clang/StaticAnalyzer/Frontend/CheckerRegistry.h" + +using namespace clang; +using namespace ento; + +namespace { +struct MyChecker : public Checker<check::BeginFunction> { +  void checkBeginFunction(CheckerContext &Ctx) const {} +}; + +void registerMyChecker(CheckerManager &Mgr) { +  MyChecker *Checker = Mgr.registerChecker<MyChecker>(); +  llvm::outs() << "Example option is set to " +               << (Mgr.getAnalyzerOptions().getCheckerBooleanOption( +                       Checker, "ExampleOption") +                       ? "true" +                       : "false") +               << '\n'; +} + +bool shouldRegisterMyChecker(const LangOptions &LO) { return true; } + +} // end anonymous namespace + +// Register plugin! +extern "C" void clang_registerCheckers(CheckerRegistry ®istry) { +  registry.addChecker(registerMyChecker, shouldRegisterMyChecker, +                      "example.MyChecker", "Example Description", +                      "example.mychecker.documentation.nonexistent.html", +                      /*isHidden*/false); + +  registry.addCheckerOption(/*OptionType*/ "bool", +                            /*CheckerFullName*/ "example.MyChecker", +                            /*OptionName*/ "ExampleOption", +                            /*DefaultValStr*/ "false", +                            /*Description*/ "This is an example checker opt.", +                            /*DevelopmentStage*/ "released"); +} + +extern "C" const char clang_analyzerAPIVersionString[] = +    CLANG_ANALYZER_API_VERSION_STRING; | 
