brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 8a16716 Raw
57 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"10 11using namespace clang;12using namespace ento;13 14void AnalysisManager::anchor() { }15 16AnalysisManager::AnalysisManager(ASTContext &ASTCtx, Preprocessor &PP,17                                 PathDiagnosticConsumers PDC,18                                 StoreManagerCreator storemgr,19                                 ConstraintManagerCreator constraintmgr,20                                 CheckerManager *checkerMgr,21                                 AnalyzerOptions &Options,22                                 std::unique_ptr<CodeInjector> injector)23    : AnaCtxMgr(24          ASTCtx, Options.UnoptimizedCFG,25          Options.ShouldIncludeImplicitDtorsInCFG,26          /*addInitializers=*/true, Options.ShouldIncludeTemporaryDtorsInCFG,27          Options.ShouldIncludeLifetimeInCFG,28          // Adding LoopExit elements to the CFG is a requirement for loop29          // unrolling.30          Options.ShouldIncludeLoopExitInCFG || Options.ShouldUnrollLoops,31          Options.ShouldIncludeScopesInCFG, Options.ShouldSynthesizeBodies,32          Options.ShouldConditionalizeStaticInitializers,33          /*addCXXNewAllocator=*/true,34          Options.ShouldIncludeRichConstructorsInCFG,35          Options.ShouldElideConstructors,36          /*addVirtualBaseBranches=*/true, std::move(injector)),37      Ctx(ASTCtx), PP(PP), LangOpts(ASTCtx.getLangOpts()),38      PathConsumers(std::move(PDC)), CreateStoreMgr(storemgr),39      CreateConstraintMgr(constraintmgr), CheckerMgr(checkerMgr),40      options(Options) {41  AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd();42  AnaCtxMgr.getCFGBuildOptions().OmitImplicitValueInitializers = true;43  AnaCtxMgr.getCFGBuildOptions().AddCXXDefaultInitExprInAggregates =44      Options.ShouldIncludeDefaultInitForAggregates;45}46 47AnalysisManager::~AnalysisManager() {48  FlushDiagnostics();49}50 51void AnalysisManager::FlushDiagnostics() {52  PathDiagnosticConsumer::FilesMade filesMade;53  for (const auto &Consumer : PathConsumers) {54    Consumer->FlushDiagnostics(&filesMade);55  }56}57