1#include "clang/StaticAnalyzer/Core/Checker.h"
2#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
3#include "clang/StaticAnalyzer/Frontend/CheckerRegistry.h"
4
5// This barebones plugin is used by clang/test/Analysis/checker-plugins.c
6// to test dependency handling among checkers loaded from plugins.
7
8using namespace clang;
9using namespace ento;
10
11namespace {
12struct Dependency : public Checker<check::BeginFunction> {
13 void checkBeginFunction(CheckerContext &Ctx) const {}
14};
15struct DependendentChecker : public Checker<check::BeginFunction> {
16 void checkBeginFunction(CheckerContext &Ctx) const {}
17};
18} // end anonymous namespace
19
20// Register plugin!
21extern "C" void clang_registerCheckers(CheckerRegistry &Registry) {
22 Registry.addChecker<Dependency>(FullName: "example.Dependency", Desc: "MockDescription");
23 Registry.addChecker<DependendentChecker>(FullName: "example.DependendentChecker",
24 Desc: "MockDescription");
25
26 Registry.addDependency(FullName: "example.DependendentChecker", Dependency: "example.Dependency");
27}
28
29extern "C" const char clang_analyzerAPIVersionString[] =
30 CLANG_ANALYZER_API_VERSION_STRING;
31