diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/StaticAnalyzer/Frontend/CreateCheckerManager.cpp')
| -rw-r--r-- | contrib/llvm-project/clang/lib/StaticAnalyzer/Frontend/CreateCheckerManager.cpp | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/contrib/llvm-project/clang/lib/StaticAnalyzer/Frontend/CreateCheckerManager.cpp b/contrib/llvm-project/clang/lib/StaticAnalyzer/Frontend/CreateCheckerManager.cpp new file mode 100644 index 000000000000..21a60785eb52 --- /dev/null +++ b/contrib/llvm-project/clang/lib/StaticAnalyzer/Frontend/CreateCheckerManager.cpp @@ -0,0 +1,50 @@ +//===- CheckerManager.h - Static Analyzer Checker Manager -------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// Defines the Static Analyzer Checker Manager. +// +//===----------------------------------------------------------------------===// + +#include "clang/StaticAnalyzer/Core/CheckerManager.h" +#include "clang/StaticAnalyzer/Frontend/CheckerRegistry.h" +#include <memory> + +namespace clang { +namespace ento { + +CheckerManager::CheckerManager( +    ASTContext &Context, AnalyzerOptions &AOptions, const Preprocessor &PP, +    ArrayRef<std::string> plugins, +    ArrayRef<std::function<void(CheckerRegistry &)>> checkerRegistrationFns) +    : Context(&Context), LangOpts(Context.getLangOpts()), AOptions(AOptions), +      PP(&PP), Diags(Context.getDiagnostics()), +      RegistryData(std::make_unique<CheckerRegistryData>()) { +  CheckerRegistry Registry(*RegistryData, plugins, Context.getDiagnostics(), +                           AOptions, checkerRegistrationFns); +  Registry.initializeRegistry(*this); +  Registry.initializeManager(*this); +  finishedCheckerRegistration(); +} + +CheckerManager::CheckerManager(AnalyzerOptions &AOptions, +                               const LangOptions &LangOpts, +                               DiagnosticsEngine &Diags, +                               ArrayRef<std::string> plugins) +    : LangOpts(LangOpts), AOptions(AOptions), Diags(Diags), +      RegistryData(std::make_unique<CheckerRegistryData>()) { +  CheckerRegistry Registry(*RegistryData, plugins, Diags, AOptions, {}); +  Registry.initializeRegistry(*this); +} + +CheckerManager::~CheckerManager() { +  for (const auto &CheckerDtor : CheckerDtors) +    CheckerDtor(); +} + +} // namespace ento +} // namespace clang  | 
