AnalyzerOptions.h revision 81fb169f42769e02c7425b23885a261c025fd5e6
1//===--- AnalyzerOptions.h - Analysis Engine Options ------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This header contains the structures necessary for a front-end to specify 11// various analyses. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_CLANG_FRONTEND_ANALYZEROPTIONS_H 16#define LLVM_CLANG_FRONTEND_ANALYZEROPTIONS_H 17 18#include <string> 19#include <vector> 20 21namespace clang { 22class ASTConsumer; 23class DiagnosticsEngine; 24class Preprocessor; 25class LangOptions; 26 27/// Analysis - Set of available source code analyses. 28enum Analyses { 29#define ANALYSIS(NAME, CMDFLAG, DESC, SCOPE) NAME, 30#include "clang/Frontend/Analyses.def" 31NumAnalyses 32}; 33 34/// AnalysisStores - Set of available analysis store models. 35enum AnalysisStores { 36#define ANALYSIS_STORE(NAME, CMDFLAG, DESC, CREATFN) NAME##Model, 37#include "clang/Frontend/Analyses.def" 38NumStores 39}; 40 41/// AnalysisConstraints - Set of available constraint models. 42enum AnalysisConstraints { 43#define ANALYSIS_CONSTRAINTS(NAME, CMDFLAG, DESC, CREATFN) NAME##Model, 44#include "clang/Frontend/Analyses.def" 45NumConstraints 46}; 47 48/// AnalysisDiagClients - Set of available diagnostic clients for rendering 49/// analysis results. 50enum AnalysisDiagClients { 51#define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATFN, AUTOCREAT) PD_##NAME, 52#include "clang/Frontend/Analyses.def" 53NUM_ANALYSIS_DIAG_CLIENTS 54}; 55 56/// AnalysisPurgeModes - Set of available strategies for dead symbol removal. 57enum AnalysisPurgeMode { 58#define ANALYSIS_PURGE(NAME, CMDFLAG, DESC) NAME, 59#include "clang/Frontend/Analyses.def" 60NumPurgeModes 61}; 62 63class AnalyzerOptions { 64public: 65 /// \brief Pair of checker name and enable/disable. 66 std::vector<std::pair<std::string, bool> > CheckersControlList; 67 AnalysisStores AnalysisStoreOpt; 68 AnalysisConstraints AnalysisConstraintsOpt; 69 AnalysisDiagClients AnalysisDiagOpt; 70 AnalysisPurgeMode AnalysisPurgeOpt; 71 std::string AnalyzeSpecificFunction; 72 unsigned MaxNodes; 73 unsigned MaxLoop; 74 unsigned ShowCheckerHelp : 1; 75 unsigned AnalyzeAll : 1; 76 unsigned AnalyzerDisplayProgress : 1; 77 unsigned AnalyzeNestedBlocks : 1; 78 unsigned EagerlyAssume : 1; 79 unsigned TrimGraph : 1; 80 unsigned VisualizeEGDot : 1; 81 unsigned VisualizeEGUbi : 1; 82 unsigned InlineCall : 1; 83 unsigned UnoptimizedCFG : 1; 84 unsigned CFGAddImplicitDtors : 1; 85 unsigned CFGAddInitializers : 1; 86 unsigned EagerlyTrimEGraph : 1; 87 unsigned PrintStats : 1; 88 89public: 90 AnalyzerOptions() { 91 AnalysisStoreOpt = RegionStoreModel; 92 AnalysisConstraintsOpt = RangeConstraintsModel; 93 AnalysisDiagOpt = PD_HTML; 94 AnalysisPurgeOpt = PurgeStmt; 95 ShowCheckerHelp = 0; 96 AnalyzeAll = 0; 97 AnalyzerDisplayProgress = 0; 98 AnalyzeNestedBlocks = 0; 99 EagerlyAssume = 0; 100 TrimGraph = 0; 101 VisualizeEGDot = 0; 102 VisualizeEGUbi = 0; 103 InlineCall = 0; 104 UnoptimizedCFG = 0; 105 CFGAddImplicitDtors = 0; 106 CFGAddInitializers = 0; 107 EagerlyTrimEGraph = 0; 108 PrintStats = 0; 109 } 110}; 111 112} 113 114#endif 115