Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalysisManager.cpp
Line
Count
Source (jump to first uncovered line)
1
//===-- AnalysisManager.cpp -------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
10
11
using namespace clang;
12
using namespace ento;
13
14
0
void AnalysisManager::anchor() { }
15
16
AnalysisManager::AnalysisManager(ASTContext &ASTCtx, DiagnosticsEngine &diags,
17
                                 const PathDiagnosticConsumers &PDC,
18
                                 StoreManagerCreator storemgr,
19
                                 ConstraintManagerCreator constraintmgr,
20
                                 CheckerManager *checkerMgr,
21
                                 AnalyzerOptions &Options,
22
                                 CodeInjector *injector)
23
    : AnaCtxMgr(
24
          ASTCtx, Options.UnoptimizedCFG,
25
          Options.ShouldIncludeImplicitDtorsInCFG,
26
          /*addInitializers=*/true,
27
          Options.ShouldIncludeTemporaryDtorsInCFG,
28
          Options.ShouldIncludeLifetimeInCFG,
29
          // Adding LoopExit elements to the CFG is a requirement for loop
30
          // unrolling.
31
          Options.ShouldIncludeLoopExitInCFG ||
32
            Options.ShouldUnrollLoops,
33
          Options.ShouldIncludeScopesInCFG,
34
          Options.ShouldSynthesizeBodies,
35
          Options.ShouldConditionalizeStaticInitializers,
36
          /*addCXXNewAllocator=*/true,
37
          Options.ShouldIncludeRichConstructorsInCFG,
38
          Options.ShouldElideConstructors,
39
          /*addVirtualBaseBranches=*/true,
40
          injector),
41
      Ctx(ASTCtx), Diags(diags), LangOpts(ASTCtx.getLangOpts()),
42
      PathConsumers(PDC), CreateStoreMgr(storemgr),
43
      CreateConstraintMgr(constraintmgr), CheckerMgr(checkerMgr),
44
918
      options(Options) {
45
918
  AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd();
46
918
}
47
48
918
AnalysisManager::~AnalysisManager() {
49
918
  FlushDiagnostics();
50
918
  for (PathDiagnosticConsumers::iterator I = PathConsumers.begin(),
51
1.91k
       E = PathConsumers.end(); I != E; 
++I997
) {
52
997
    delete *I;
53
997
  }
54
918
}
55
56
918
void AnalysisManager::FlushDiagnostics() {
57
918
  PathDiagnosticConsumer::FilesMade filesMade;
58
918
  for (PathDiagnosticConsumers::iterator I = PathConsumers.begin(),
59
918
       E = PathConsumers.end();
60
1.91k
       I != E; 
++I997
) {
61
997
    (*I)->FlushDiagnostics(&filesMade);
62
997
  }
63
918
}