1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //===- 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
|