clang  16.0.0git
AnalyzerOptions.h
Go to the documentation of this file.
1 //===- AnalyzerOptions.h - Analysis Engine Options --------------*- 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 // This header defines various options for the static analyzer that are set
10 // by the frontend and are consulted throughout the analyzer.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H
15 #define LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H
16 
18 #include "clang/Basic/LLVM.h"
19 #include "llvm/ADT/IntrusiveRefCntPtr.h"
20 #include "llvm/ADT/Optional.h"
21 #include "llvm/ADT/StringMap.h"
22 #include "llvm/ADT/StringRef.h"
23 #include <string>
24 #include <utility>
25 #include <vector>
26 
27 namespace clang {
28 
29 namespace ento {
30 
31 class CheckerBase;
32 
33 } // namespace ento
34 
35 /// AnalysisConstraints - Set of available constraint models.
37 #define ANALYSIS_CONSTRAINTS(NAME, CMDFLAG, DESC, CREATFN) NAME##Model,
38 #include "clang/StaticAnalyzer/Core/Analyses.def"
40 };
41 
42 /// AnalysisDiagClients - Set of available diagnostic clients for rendering
43 /// analysis results.
45 #define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATFN) PD_##NAME,
46 #include "clang/StaticAnalyzer/Core/Analyses.def"
49 };
50 
51 /// AnalysisPurgeModes - Set of available strategies for dead symbol removal.
53 #define ANALYSIS_PURGE(NAME, CMDFLAG, DESC) NAME,
54 #include "clang/StaticAnalyzer/Core/Analyses.def"
56 };
57 
58 /// AnalysisInlineFunctionSelection - Set of inlining function selection heuristics.
60 #define ANALYSIS_INLINING_MODE(NAME, CMDFLAG, DESC) NAME,
61 #include "clang/StaticAnalyzer/Core/Analyses.def"
63 };
64 
65 /// Describes the different kinds of C++ member functions which can be
66 /// considered for inlining by the analyzer.
67 ///
68 /// These options are cumulative; enabling one kind of member function will
69 /// enable all kinds with lower enum values.
71  // Uninitialized = 0,
72 
73  /// A dummy mode in which no C++ inlining is enabled.
75 
76  /// Refers to regular member function and operator calls.
78 
79  /// Refers to constructors (implicit or explicit).
80  ///
81  /// Note that a constructor will not be inlined if the corresponding
82  /// destructor is non-trivial.
84 
85  /// Refers to destructors (implicit or explicit).
87 };
88 
89 /// Describes the different modes of inter-procedural analysis.
90 enum IPAKind {
91  /// Perform only intra-procedural analysis.
92  IPAK_None = 1,
93 
94  /// Inline C functions and blocks when their definitions are available.
96 
97  /// Inline callees(C, C++, ObjC) when their definitions are available.
99 
100  /// Enable inlining of dynamically dispatched methods.
102 
103  /// Enable inlining of dynamically dispatched methods, bifurcate paths when
104  /// exact type info is unavailable.
106 };
107 
109  DFS,
110  BFS,
115 };
116 
117 /// Describes the kinds for high-level analyzer mode.
119  /// Perform shallow but fast analyzes.
121 
122  /// Perform deep analyzes.
124 };
125 
127 
128 /// Stores options for the analyzer from the command line.
129 ///
130 /// Some options are frontend flags (e.g.: -analyzer-output), but some are
131 /// analyzer configuration options, which are preceded by -analyzer-config
132 /// (e.g.: -analyzer-config notes-as-events=true).
133 ///
134 /// If you'd like to add a new frontend flag, add it to
135 /// include/clang/Driver/CC1Options.td, add a new field to store the value of
136 /// that flag in this class, and initialize it in
137 /// lib/Frontend/CompilerInvocation.cpp.
138 ///
139 /// If you'd like to add a new non-checker configuration, register it in
140 /// include/clang/StaticAnalyzer/Core/AnalyzerOptions.def, and refer to the
141 /// top of the file for documentation.
142 ///
143 /// If you'd like to add a new checker option, call getChecker*Option()
144 /// whenever.
145 ///
146 /// Some of the options are controlled by raw frontend flags for no good reason,
147 /// and should be eventually converted into -analyzer-config flags. New analyzer
148 /// options should not be implemented as frontend flags. Frontend flags still
149 /// make sense for things that do not affect the actual analysis.
150 class AnalyzerOptions : public RefCountedBase<AnalyzerOptions> {
151 public:
152  using ConfigTable = llvm::StringMap<std::string>;
153 
154  /// Retrieves the list of checkers generated from Checkers.td. This doesn't
155  /// contain statically linked but non-generated checkers and plugin checkers!
156  static std::vector<StringRef>
157  getRegisteredCheckers(bool IncludeExperimental = false);
158 
159  /// Retrieves the list of packages generated from Checkers.td. This doesn't
160  /// contain statically linked but non-generated packages and plugin packages!
161  static std::vector<StringRef>
162  getRegisteredPackages(bool IncludeExperimental = false);
163 
164  /// Convenience function for printing options or checkers and their
165  /// description in a formatted manner. If \p MinLineWidth is set to 0, no line
166  /// breaks are introduced for the description.
167  ///
168  /// Format, depending whether the option name's length is less than
169  /// \p EntryWidth:
170  ///
171  /// <padding>EntryName<padding>Description
172  /// <---------padding--------->Description
173  /// <---------padding--------->Description
174  ///
175  /// <padding>VeryVeryLongEntryName
176  /// <---------padding--------->Description
177  /// <---------padding--------->Description
178  /// ^~~~~~~~~InitialPad
179  /// ^~~~~~~~~~~~~~~~~~EntryWidth
180  /// ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MinLineWidth
181  static void printFormattedEntry(llvm::raw_ostream &Out,
182  std::pair<StringRef, StringRef> EntryDescPair,
183  size_t InitialPad, size_t EntryWidth,
184  size_t MinLineWidth = 0);
185 
186  /// Pairs of checker/package name and enable/disable.
187  std::vector<std::pair<std::string, bool>> CheckersAndPackages;
188 
189  /// Vector of checker/package names which will not emit warnings.
190  std::vector<std::string> SilencedCheckersAndPackages;
191 
192  /// A key-value table of use-specified configuration values.
193  // TODO: This shouldn't be public.
198 
200 
201  /// File path to which the exploded graph should be dumped.
203 
204  /// Store full compiler invocation for reproducible instructions in the
205  /// generated report.
207 
208  /// The maximum number of times the analyzer visits a block.
210 
211  /// Disable all analyzer checkers.
212  ///
213  /// This flag allows one to disable analyzer checkers on the code processed by
214  /// the given analysis consumer. Note, the code will get parsed and the
215  /// command-line options will get checked.
216  unsigned DisableAllCheckers : 1;
217 
218  unsigned ShowCheckerHelp : 1;
219  unsigned ShowCheckerHelpAlpha : 1;
221 
222  unsigned ShowCheckerOptionList : 1;
225 
227  unsigned ShowConfigOptionsList : 1;
229  unsigned AnalyzeAll : 1;
231 
233 
234  unsigned TrimGraph : 1;
236  unsigned UnoptimizedCFG : 1;
237  unsigned PrintStats : 1;
238 
239  /// Do not re-analyze paths leading to exhausted nodes with a different
240  /// strategy. We get better code coverage when retry is enabled.
241  unsigned NoRetryExhausted : 1;
242 
243  /// Emit analyzer warnings as errors.
244  bool AnalyzerWerror : 1;
245 
246  /// The inlining stack depth limit.
248 
249  /// The mode of function selection used during inlining.
251 
252  // Create a field for each -analyzer-config option.
253 #define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \
254  SHALLOW_VAL, DEEP_VAL) \
255  ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, SHALLOW_VAL)
256 
257 #define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) \
258  TYPE NAME;
259 
260 #include "clang/StaticAnalyzer/Core/AnalyzerOptions.def"
261 #undef ANALYZER_OPTION
262 #undef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
263 
264  // Create an array of all -analyzer-config command line options. Sort it in
265  // the constructor.
266  std::vector<llvm::StringLiteral> AnalyzerConfigCmdFlags = {
267 #define ANALYZER_OPTION_DEPENDS_ON_USER_MODE(TYPE, NAME, CMDFLAG, DESC, \
268  SHALLOW_VAL, DEEP_VAL) \
269  ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, SHALLOW_VAL)
270 
271 #define ANALYZER_OPTION(TYPE, NAME, CMDFLAG, DESC, DEFAULT_VAL) \
272  llvm::StringLiteral(CMDFLAG),
273 
274 #include "clang/StaticAnalyzer/Core/AnalyzerOptions.def"
275 #undef ANALYZER_OPTION
276 #undef ANALYZER_OPTION_DEPENDS_ON_USER_MODE
277  };
278 
279  bool isUnknownAnalyzerConfig(StringRef Name) const {
280  assert(llvm::is_sorted(AnalyzerConfigCmdFlags));
281 
282  return !std::binary_search(AnalyzerConfigCmdFlags.begin(),
283  AnalyzerConfigCmdFlags.end(), Name);
284  }
285 
297  llvm::sort(AnalyzerConfigCmdFlags);
298  }
299 
300  /// Interprets an option's string value as a boolean. The "true" string is
301  /// interpreted as true and the "false" string is interpreted as false.
302  ///
303  /// If an option value is not provided, returns the given \p DefaultVal.
304  /// @param [in] CheckerName The *full name* of the checker. One may retrieve
305  /// this from the checker object's field \c Name, or through \c
306  /// CheckerManager::getCurrentCheckerName within the checker's registry
307  /// function.
308  /// Checker options are retrieved in the following format:
309  /// `-analyzer-config CheckerName:OptionName=Value.
310  /// @param [in] OptionName Name for option to retrieve.
311  /// @param [in] SearchInParents If set to true and the searched option was not
312  /// specified for the given checker the options for the parent packages will
313  /// be searched as well. The inner packages take precedence over the outer
314  /// ones.
315  bool getCheckerBooleanOption(StringRef CheckerName, StringRef OptionName,
316  bool SearchInParents = false) const;
317 
318  bool getCheckerBooleanOption(const ento::CheckerBase *C, StringRef OptionName,
319  bool SearchInParents = false) const;
320 
321  /// Interprets an option's string value as an integer value.
322  ///
323  /// If an option value is not provided, returns the given \p DefaultVal.
324  /// @param [in] CheckerName The *full name* of the checker. One may retrieve
325  /// this from the checker object's field \c Name, or through \c
326  /// CheckerManager::getCurrentCheckerName within the checker's registry
327  /// function.
328  /// Checker options are retrieved in the following format:
329  /// `-analyzer-config CheckerName:OptionName=Value.
330  /// @param [in] OptionName Name for option to retrieve.
331  /// @param [in] SearchInParents If set to true and the searched option was not
332  /// specified for the given checker the options for the parent packages will
333  /// be searched as well. The inner packages take precedence over the outer
334  /// ones.
335  int getCheckerIntegerOption(StringRef CheckerName, StringRef OptionName,
336  bool SearchInParents = false) const;
337 
338  int getCheckerIntegerOption(const ento::CheckerBase *C, StringRef OptionName,
339  bool SearchInParents = false) const;
340 
341  /// Query an option's string value.
342  ///
343  /// If an option value is not provided, returns the given \p DefaultVal.
344  /// @param [in] CheckerName The *full name* of the checker. One may retrieve
345  /// this from the checker object's field \c Name, or through \c
346  /// CheckerManager::getCurrentCheckerName within the checker's registry
347  /// function.
348  /// Checker options are retrieved in the following format:
349  /// `-analyzer-config CheckerName:OptionName=Value.
350  /// @param [in] OptionName Name for option to retrieve.
351  /// @param [in] SearchInParents If set to true and the searched option was not
352  /// specified for the given checker the options for the parent packages will
353  /// be searched as well. The inner packages take precedence over the outer
354  /// ones.
355  StringRef getCheckerStringOption(StringRef CheckerName, StringRef OptionName,
356  bool SearchInParents = false) const;
357 
358  StringRef getCheckerStringOption(const ento::CheckerBase *C,
359  StringRef OptionName,
360  bool SearchInParents = false) const;
361 
364 
365  /// Returns the inter-procedural analysis mode.
366  IPAKind getIPAMode() const;
367 
368  /// Returns the option controlling which C++ member functions will be
369  /// considered for inlining.
370  ///
371  /// This is controlled by the 'c++-inlining' config option.
372  ///
373  /// \sa CXXMemberInliningMode
375 
377  return {FullCompilerInvocation,
378  ShouldDisplayMacroExpansions,
379  ShouldSerializeStats,
380  // The stable report filename option is deprecated because
381  // file names are now always stable. Now the old option acts as
382  // an alias to the new verbose filename option because this
383  // closely mimics the behavior under the old option.
384  ShouldWriteStableReportFilename || ShouldWriteVerboseReportFilename,
386  ShouldApplyFixIts,
387  ShouldDisplayCheckerNameForText};
388  }
389 };
390 
392 
393 //===----------------------------------------------------------------------===//
394 // We'll use AnalyzerOptions in the frontend, but we can't link the frontend
395 // with clangStaticAnalyzerCore, because clangStaticAnalyzerCore depends on
396 // clangFrontend.
397 //
398 // For this reason, implement some methods in this header file.
399 //===----------------------------------------------------------------------===//
400 
401 inline std::vector<StringRef>
402 AnalyzerOptions::getRegisteredCheckers(bool IncludeExperimental) {
403  static constexpr llvm::StringLiteral StaticAnalyzerCheckerNames[] = {
404 #define GET_CHECKERS
405 #define CHECKER(FULLNAME, CLASS, HELPTEXT, DOC_URI, IS_HIDDEN) \
406  llvm::StringLiteral(FULLNAME),
407 #include "clang/StaticAnalyzer/Checkers/Checkers.inc"
408 #undef CHECKER
409 #undef GET_CHECKERS
410  };
411  std::vector<StringRef> Checkers;
412  for (StringRef CheckerName : StaticAnalyzerCheckerNames) {
413  if (!CheckerName.startswith("debug.") &&
414  (IncludeExperimental || !CheckerName.startswith("alpha.")))
415  Checkers.push_back(CheckerName);
416  }
417  return Checkers;
418 }
419 
420 inline std::vector<StringRef>
421 AnalyzerOptions::getRegisteredPackages(bool IncludeExperimental) {
422  static constexpr llvm::StringLiteral StaticAnalyzerPackageNames[] = {
423 #define GET_PACKAGES
424 #define PACKAGE(FULLNAME) llvm::StringLiteral(FULLNAME),
425 #include "clang/StaticAnalyzer/Checkers/Checkers.inc"
426 #undef PACKAGE
427 #undef GET_PACKAGES
428  };
429  std::vector<StringRef> Packages;
430  for (StringRef PackageName : StaticAnalyzerPackageNames) {
431  if (PackageName != "debug" &&
432  (IncludeExperimental || PackageName != "alpha"))
433  Packages.push_back(PackageName);
434  }
435  return Packages;
436 }
437 
438 } // namespace clang
439 
440 #endif // LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H
clang::ento::PathDiagnosticConsumerOptions
These options tweak the behavior of path diangostic consumers.
Definition: PathDiagnostic.h:61
clang::IPAK_BasicInlining
@ IPAK_BasicInlining
Inline C functions and blocks when their definitions are available.
Definition: AnalyzerOptions.h:95
clang::AnalyzerOptions::ShowCheckerOptionDeveloperList
unsigned ShowCheckerOptionDeveloperList
Definition: AnalyzerOptions.h:224
clang::AnalyzerOptions::getRegisteredPackages
static std::vector< StringRef > getRegisteredPackages(bool IncludeExperimental=false)
Retrieves the list of packages generated from Checkers.td.
Definition: AnalyzerOptions.h:421
clang::CTUPhase1InliningKind::None
@ None
clang::AnalyzerOptions::maxBlockVisitOnPath
unsigned maxBlockVisitOnPath
The maximum number of times the analyzer visits a block.
Definition: AnalyzerOptions.h:209
string
string(SUBSTRING ${CMAKE_CURRENT_BINARY_DIR} 0 ${PATH_LIB_START} PATH_HEAD) string(SUBSTRING $
Definition: CMakeLists.txt:22
clang::AnalyzerOptions::AnalysisConstraintsOpt
AnalysisConstraints AnalysisConstraintsOpt
Definition: AnalyzerOptions.h:195
clang::AnalyzerOptions::DisableAllCheckers
unsigned DisableAllCheckers
Disable all analyzer checkers.
Definition: AnalyzerOptions.h:216
clang::ExplorationStrategyKind::DFS
@ DFS
clang::AnalyzerOptions::AnalyzerWerror
bool AnalyzerWerror
Emit analyzer warnings as errors.
Definition: AnalyzerOptions.h:244
clang::ExplorationStrategyKind::UnexploredFirstLocationQueue
@ UnexploredFirstLocationQueue
clang::UMK_Shallow
@ UMK_Shallow
Perform shallow but fast analyzes.
Definition: AnalyzerOptions.h:120
clang::ExplorationStrategyKind::BFS
@ BFS
clang::AnalyzerOptions::getCTUPhase1Inlining
CTUPhase1InliningKind getCTUPhase1Inlining() const
Definition: AnalyzerOptions.cpp:83
clang::AnalyzerOptions::AnalyzerOptions
AnalyzerOptions()
Definition: AnalyzerOptions.h:286
clang::CTUPhase1InliningKind::Small
@ Small
clang::AnalyzerOptions::AnalysisPurgeOpt
AnalysisPurgeMode AnalysisPurgeOpt
Definition: AnalyzerOptions.h:197
clang::IPAK_Inlining
@ IPAK_Inlining
Inline callees(C, C++, ObjC) when their definitions are available.
Definition: AnalyzerOptions.h:98
llvm::RefCountedBase
Definition: LLVM.h:49
clang::AnalyzerOptions::getExplorationStrategy
ExplorationStrategyKind getExplorationStrategy() const
Definition: AnalyzerOptions.cpp:65
clang::CIMK_Constructors
@ CIMK_Constructors
Refers to constructors (implicit or explicit).
Definition: AnalyzerOptions.h:83
clang::AnalyzerOptions::getCheckerStringOption
StringRef getCheckerStringOption(StringRef CheckerName, StringRef OptionName, bool SearchInParents=false) const
Query an option's string value.
Definition: AnalyzerOptions.cpp:126
clang::AnalyzerOptions::ConfigTable
llvm::StringMap< std::string > ConfigTable
Definition: AnalyzerOptions.h:152
clang::IPAK_DynamicDispatchBifurcate
@ IPAK_DynamicDispatchBifurcate
Enable inlining of dynamically dispatched methods, bifurcate paths when exact type info is unavailabl...
Definition: AnalyzerOptions.h:105
clang::AnalyzerOptions::ShowCheckerHelpAlpha
unsigned ShowCheckerHelpAlpha
Definition: AnalyzerOptions.h:219
clang::AnalyzerOptions::mayInlineCXXMemberFunction
bool mayInlineCXXMemberFunction(CXXInlineableMemberKind K) const
Returns the option controlling which C++ member functions will be considered for inlining.
Definition: AnalyzerOptions.cpp:108
clang::AnalysisDiagClients
AnalysisDiagClients
AnalysisDiagClients - Set of available diagnostic clients for rendering analysis results.
Definition: AnalyzerOptions.h:44
clang::AnalyzerOptions::AnalyzerDisplayProgress
unsigned AnalyzerDisplayProgress
Definition: AnalyzerOptions.h:230
clang::CIMK_None
@ CIMK_None
A dummy mode in which no C++ inlining is enabled.
Definition: AnalyzerOptions.h:74
clang::IPAK_DynamicDispatch
@ IPAK_DynamicDispatch
Enable inlining of dynamically dispatched methods.
Definition: AnalyzerOptions.h:101
clang::AnalyzerOptions::InliningMode
AnalysisInliningMode InliningMode
The mode of function selection used during inlining.
Definition: AnalyzerOptions.h:250
clang::AnalyzerOptions::ShowEnabledCheckerList
unsigned ShowEnabledCheckerList
Definition: AnalyzerOptions.h:226
clang::AnalyzerOptions::AnalysisDiagOpt
AnalysisDiagClients AnalysisDiagOpt
Definition: AnalyzerOptions.h:196
clang::CXXInlineableMemberKind
CXXInlineableMemberKind
Describes the different kinds of C++ member functions which can be considered for inlining by the ana...
Definition: AnalyzerOptions.h:70
clang::PD_NONE
@ PD_NONE
Definition: AnalyzerOptions.h:47
clang::CTUPhase1InliningKind::All
@ All
clang::AnalyzerOptions::ShowCheckerHelp
unsigned ShowCheckerHelp
Definition: AnalyzerOptions.h:218
PathDiagnostic.h
clang::AnalyzerOptions::getCheckerIntegerOption
int getCheckerIntegerOption(StringRef CheckerName, StringRef OptionName, bool SearchInParents=false) const
Interprets an option's string value as an integer value.
Definition: AnalyzerOptions.cpp:184
clang::AnalysisConstraints
AnalysisConstraints
AnalysisConstraints - Set of available constraint models.
Definition: AnalyzerOptions.h:36
clang::AnalyzerOptions::eagerlyAssumeBinOpBifurcation
unsigned eagerlyAssumeBinOpBifurcation
Definition: AnalyzerOptions.h:232
clang::AnalyzerOptions::getRegisteredCheckers
static std::vector< StringRef > getRegisteredCheckers(bool IncludeExperimental=false)
Retrieves the list of checkers generated from Checkers.td.
Definition: AnalyzerOptions.h:402
clang::NUM_ANALYSIS_DIAG_CLIENTS
@ NUM_ANALYSIS_DIAG_CLIENTS
Definition: AnalyzerOptions.h:48
clang::AnalyzerOptions::ShowCheckerOptionList
unsigned ShowCheckerOptionList
Definition: AnalyzerOptions.h:222
clang::AnalyzerOptions::isUnknownAnalyzerConfig
bool isUnknownAnalyzerConfig(StringRef Name) const
Definition: AnalyzerOptions.h:279
clang::AnalyzerOptions::CheckersAndPackages
std::vector< std::pair< std::string, bool > > CheckersAndPackages
Pairs of checker/package name and enable/disable.
Definition: AnalyzerOptions.h:187
clang::ExplorationStrategyKind
ExplorationStrategyKind
Definition: AnalyzerOptions.h:108
clang::AnalyzerOptions::Config
ConfigTable Config
A key-value table of use-specified configuration values.
Definition: AnalyzerOptions.h:194
clang::IPAK_None
@ IPAK_None
Perform only intra-procedural analysis.
Definition: AnalyzerOptions.h:92
clang::AnalyzerOptions::getIPAMode
IPAKind getIPAMode() const
Returns the inter-procedural analysis mode.
Definition: AnalyzerOptions.cpp:94
clang::AnalyzerOptions::AnalyzeSpecificFunction
std::string AnalyzeSpecificFunction
Definition: AnalyzerOptions.h:199
clang::AnalysisInliningMode
AnalysisInliningMode
AnalysisInlineFunctionSelection - Set of inlining function selection heuristics.
Definition: AnalyzerOptions.h:59
clang::AnalyzerOptions::ShowCheckerHelpDeveloper
unsigned ShowCheckerHelpDeveloper
Definition: AnalyzerOptions.h:220
clang::AnalyzerOptions::printFormattedEntry
static void printFormattedEntry(llvm::raw_ostream &Out, std::pair< StringRef, StringRef > EntryDescPair, size_t InitialPad, size_t EntryWidth, size_t MinLineWidth=0)
Convenience function for printing options or checkers and their description in a formatted manner.
Definition: AnalyzerOptions.cpp:33
clang::NumInliningModes
@ NumInliningModes
Definition: AnalyzerOptions.h:62
false
#define false
Definition: stdbool.h:22
clang::AnalyzerOptions::UnoptimizedCFG
unsigned UnoptimizedCFG
Definition: AnalyzerOptions.h:236
clang::AnalyzerOptions::getDiagOpts
ento::PathDiagnosticConsumerOptions getDiagOpts() const
Definition: AnalyzerOptions.h:376
clang::ExplorationStrategyKind::BFSBlockDFSContents
@ BFSBlockDFSContents
clang::ento::CheckerBase
Definition: Checker.h:492
clang::AnalyzerOptions::DumpExplodedGraphTo
std::string DumpExplodedGraphTo
File path to which the exploded graph should be dumped.
Definition: AnalyzerOptions.h:202
LLVM.h
clang::AnalyzerOptions
Stores options for the analyzer from the command line.
Definition: AnalyzerOptions.h:150
clang::NumPurgeModes
@ NumPurgeModes
Definition: AnalyzerOptions.h:55
clang::AnalyzerOptions::ShowConfigOptionsList
unsigned ShowConfigOptionsList
Definition: AnalyzerOptions.h:227
clang::ExplorationStrategyKind::UnexploredFirstQueue
@ UnexploredFirstQueue
clang::CTUPhase1InliningKind
CTUPhase1InliningKind
Definition: AnalyzerOptions.h:126
clang::AnalyzerOptions::InlineMaxStackDepth
unsigned InlineMaxStackDepth
The inlining stack depth limit.
Definition: AnalyzerOptions.h:247
clang::ExplorationStrategyKind::UnexploredFirst
@ UnexploredFirst
clang::AnalyzerOptions::SilencedCheckersAndPackages
std::vector< std::string > SilencedCheckersAndPackages
Vector of checker/package names which will not emit warnings.
Definition: AnalyzerOptions.h:190
clang::AnalyzerOptions::ShouldEmitErrorsOnInvalidConfigValue
unsigned ShouldEmitErrorsOnInvalidConfigValue
Definition: AnalyzerOptions.h:228
clang::AnalyzerOptions::getCheckerBooleanOption
bool getCheckerBooleanOption(StringRef CheckerName, StringRef OptionName, bool SearchInParents=false) const
Interprets an option's string value as a boolean.
Definition: AnalyzerOptions.cpp:160
clang::AnalyzerOptions::NoRetryExhausted
unsigned NoRetryExhausted
Do not re-analyze paths leading to exhausted nodes with a different strategy.
Definition: AnalyzerOptions.h:241
clang::AnalyzerOptions::AnalyzerConfigCmdFlags
std::vector< llvm::StringLiteral > AnalyzerConfigCmdFlags
Definition: AnalyzerOptions.h:266
clang
Definition: CalledOnceCheck.h:17
clang::NumConstraints
@ NumConstraints
Definition: AnalyzerOptions.h:39
clang::AnalyzerOptions::FullCompilerInvocation
std::string FullCompilerInvocation
Store full compiler invocation for reproducible instructions in the generated report.
Definition: AnalyzerOptions.h:206
clang::CIMK_Destructors
@ CIMK_Destructors
Refers to destructors (implicit or explicit).
Definition: AnalyzerOptions.h:86
clang::CIMK_MemberFunctions
@ CIMK_MemberFunctions
Refers to regular member function and operator calls.
Definition: AnalyzerOptions.h:77
clang::AnalyzerOptions::PrintStats
unsigned PrintStats
Definition: AnalyzerOptions.h:237
clang::IPAKind
IPAKind
Describes the different modes of inter-procedural analysis.
Definition: AnalyzerOptions.h:90
clang::AnalyzerOptions::visualizeExplodedGraphWithGraphViz
unsigned visualizeExplodedGraphWithGraphViz
Definition: AnalyzerOptions.h:235
clang::AnalysisPurgeMode
AnalysisPurgeMode
AnalysisPurgeModes - Set of available strategies for dead symbol removal.
Definition: AnalyzerOptions.h:52
clang::UserModeKind
UserModeKind
Describes the kinds for high-level analyzer mode.
Definition: AnalyzerOptions.h:118
clang::UMK_Deep
@ UMK_Deep
Perform deep analyzes.
Definition: AnalyzerOptions.h:123
clang::AnalyzerOptions::ShowCheckerOptionAlphaList
unsigned ShowCheckerOptionAlphaList
Definition: AnalyzerOptions.h:223
clang::AnalyzerOptions::TrimGraph
unsigned TrimGraph
Definition: AnalyzerOptions.h:234
llvm::IntrusiveRefCntPtr< AnalyzerOptions >
clang::AnalyzerOptions::AnalyzeAll
unsigned AnalyzeAll
Definition: AnalyzerOptions.h:229