1 #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
2 #include "clang/StaticAnalyzer/Core/Checker.h"
3 #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
4 #include "clang/StaticAnalyzer/Frontend/CheckerRegistry.h"
10 struct MyChecker
: public Checker
<check::BeginFunction
> {
11 void checkBeginFunction(CheckerContext
&Ctx
) const {}
14 void registerMyChecker(CheckerManager
&Mgr
) {
15 MyChecker
*Checker
= Mgr
.registerChecker
<MyChecker
>();
16 llvm::outs() << "Example option is set to "
17 << (Mgr
.getAnalyzerOptions().getCheckerBooleanOption(
18 Checker
, "ExampleOption")
24 bool shouldRegisterMyChecker(const CheckerManager
&mgr
) { return true; }
26 } // end anonymous namespace
29 extern "C" void clang_registerCheckers(CheckerRegistry
®istry
) {
30 registry
.addChecker(registerMyChecker
, shouldRegisterMyChecker
,
31 "example.MyChecker", "Example Description",
32 "example.mychecker.documentation.nonexistent.html",
35 registry
.addCheckerOption(/*OptionType*/ "bool",
36 /*CheckerFullName*/ "example.MyChecker",
37 /*OptionName*/ "ExampleOption",
38 /*DefaultValStr*/ "false",
39 /*Description*/ "This is an example checker opt.",
40 /*DevelopmentStage*/ "released");
43 extern "C" const char clang_analyzerAPIVersionString
[] =
44 CLANG_ANALYZER_API_VERSION_STRING
;