1 //===-- AnalysisManager.cpp -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
12 using namespace clang;
15 void AnalysisManager::anchor() { }
17 AnalysisManager::AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags,
18 const LangOptions &lang,
19 const PathDiagnosticConsumers &PDC,
20 StoreManagerCreator storemgr,
21 ConstraintManagerCreator constraintmgr,
22 CheckerManager *checkerMgr,
23 AnalyzerOptions &Options,
24 CodeInjector *injector)
25 : AnaCtxMgr(Options.UnoptimizedCFG,
26 Options.includeImplicitDtorsInCFG(),
27 /*AddInitializers=*/true,
28 Options.includeTemporaryDtorsInCFG(),
29 Options.includeLifetimeInCFG(),
30 Options.shouldSynthesizeBodies(),
31 Options.shouldConditionalizeStaticInitializers(),
32 /*addCXXNewAllocator=*/true,
38 CreateStoreMgr(storemgr), CreateConstraintMgr(constraintmgr),
39 CheckerMgr(checkerMgr),
41 AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd();
44 AnalysisManager::~AnalysisManager() {
46 for (PathDiagnosticConsumers::iterator I = PathConsumers.begin(),
47 E = PathConsumers.end(); I != E; ++I) {
52 void AnalysisManager::FlushDiagnostics() {
53 PathDiagnosticConsumer::FilesMade filesMade;
54 for (PathDiagnosticConsumers::iterator I = PathConsumers.begin(),
55 E = PathConsumers.end();
57 (*I)->FlushDiagnostics(&filesMade);