15 #ifndef LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H 16 #define LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_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" 37 #define ANALYSIS(NAME, CMDFLAG, DESC, SCOPE) NAME, 38 #include "clang/StaticAnalyzer/Core/Analyses.def" 44 #define ANALYSIS_STORE(NAME, CMDFLAG, DESC, CREATFN) NAME##Model, 45 #include "clang/StaticAnalyzer/Core/Analyses.def" 51 #define ANALYSIS_CONSTRAINTS(NAME, CMDFLAG, DESC, CREATFN) NAME##Model, 52 #include "clang/StaticAnalyzer/Core/Analyses.def" 59 #define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATFN) PD_##NAME, 60 #include "clang/StaticAnalyzer/Core/Analyses.def" 67 #define ANALYSIS_PURGE(NAME, CMDFLAG, DESC) NAME, 68 #include "clang/StaticAnalyzer/Core/Analyses.def" 74 #define ANALYSIS_INLINING_MODE(NAME, CMDFLAG, DESC) NAME, 75 #include "clang/StaticAnalyzer/Core/Analyses.def" 128 static std::vector<StringRef>
129 getRegisteredCheckers(
bool IncludeExperimental =
false);
186 unsigned InlineMaxStackDepth = 5;
195 UnexploredFirstQueue,
217 UserModeKind UserMode = UMK_NotSet;
359 StringRef getCheckerOption(StringRef CheckerName, StringRef OptionName,
361 bool SearchInParents =
false);
365 : DisableAllChecks(
false), ShowCheckerHelp(
false),
366 ShowEnabledCheckerList(
false), AnalyzeAll(
false),
367 AnalyzerDisplayProgress(
false), AnalyzeNestedBlocks(
false),
368 eagerlyAssumeBinOpBifurcation(
false), TrimGraph(
false),
369 visualizeExplodedGraphWithGraphViz(
false),
370 visualizeExplodedGraphWithUbiGraph(
false), UnoptimizedCFG(
false),
371 PrintStats(
false), NoRetryExhausted(
false), CXXMemberInliningMode() {}
387 bool getBooleanOption(StringRef Name,
bool DefaultVal,
389 bool SearchInParents =
false);
405 bool getBooleanOption(
Optional<bool> &V, StringRef Name,
bool DefaultVal,
407 bool SearchInParents =
false);
422 int getOptionAsInteger(StringRef Name,
int DefaultVal,
424 bool SearchInParents =
false);
439 StringRef getOptionAsString(StringRef Name, StringRef DefaultVal,
441 bool SearchInParents =
false);
446 UserModeKind getUserMode();
462 bool mayInlineObjCMethod();
469 bool includeTemporaryDtorsInCFG();
476 bool includeImplicitDtorsInCFG();
483 bool includeLifetimeInCFG();
490 bool includeLoopExitInCFG();
497 bool includeRichConstructorsInCFG();
503 bool includeScopesInCFG();
510 bool mayInlineCXXStandardLibrary();
516 bool mayInlineTemplateFunctions();
522 bool mayInlineCXXAllocator();
529 bool mayInlineCXXContainerMethods();
539 bool mayInlineCXXSharedPtrDtor();
550 bool mayInlineCXXTemporaryDtors();
560 bool shouldSuppressNullReturnPaths();
571 bool shouldAvoidSuppressingNullArgumentPaths();
578 bool shouldSuppressInlinedDefensiveChecks();
585 bool shouldSuppressFromCXXStandardLibrary();
592 bool shouldCrosscheckWithZ3();
599 bool shouldReportIssuesInMainSourceFile();
605 bool shouldWriteStableReportFilename();
613 bool shouldSerializeStats();
620 bool shouldPrunePaths();
624 bool shouldConditionalizeStaticInitializers();
630 unsigned getAlwaysInlineSize();
636 unsigned getMaxInlinableSize();
640 bool shouldSynthesizeBodies();
647 unsigned getGraphTrimInterval();
652 unsigned getMaxSymbolComplexity();
657 unsigned getMaxTimesInlineLarge();
664 unsigned getMinCFGSizeTreatFunctionsAsLarge();
671 unsigned getMaxNodesPerTopLevelFunction();
675 bool shouldInlineLambdas();
679 bool shouldWidenLoops();
683 bool shouldUnrollLoops();
691 bool shouldDisplayNotesAsEvents();
705 bool shouldAggressivelySimplifyBinaryOperation();
708 StringRef getCTUDir();
711 StringRef getCTUIndexName();
716 bool naiveCTUEnabled();
723 bool shouldElideConstructors();
730 #endif // LLVM_CLANG_STATICANALYZER_CORE_ANALYZEROPTIONS_H Inline C functions and blocks when their definitions are available.
IPAKind
Describes the different modes of inter-procedural analysis.
unsigned visualizeExplodedGraphWithGraphViz
Perform only intra-procedural analysis.
A dummy mode in which no C++ inlining is enabled.
Inline callees(C, C++, ObjC) when their definitions are available.
unsigned eagerlyAssumeBinOpBifurcation
The flag regulates if we should eagerly assume evaluations of conditionals, thus, bifurcating the pat...
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
std::string FullCompilerInvocation
Store full compiler invocation for reproducible instructions in the generated report.
std::vector< std::pair< std::string, bool > > CheckersControlList
Pair of checker name and enable/disable.
AnalysisStores
AnalysisStores - Set of available analysis store models.
unsigned ShowEnabledCheckerList
Refers to regular member function and operator calls.
AnalysisInliningMode
AnalysisInlineFunctionSelection - Set of inlining function selection heuristics.
Refers to constructors (implicit or explicit).
Enable inlining of dynamically dispatched methods.
AnalysisConstraints
AnalysisConstraints - Set of available constraint models.
llvm::StringMap< std::string > ConfigTable
ConfigTable Config
A key-value table of use-specified configuration values.
unsigned visualizeExplodedGraphWithUbiGraph
Refers to destructors (implicit or explicit).
unsigned maxBlockVisitOnPath
The maximum number of times the analyzer visits a block.
unsigned DisableAllChecks
Disable all analyzer checks.
Dataflow Directional Tag Classes.
std::string AnalyzeSpecificFunction
AnalysisPurgeMode
AnalysisPurgeModes - Set of available strategies for dead symbol removal.
unsigned AnalyzerDisplayProgress
unsigned AnalyzeNestedBlocks
unsigned NoRetryExhausted
Do not re-analyze paths leading to exhausted nodes with a different strategy.
Analyses
Analysis - Set of available source code analyses.
CXXInlineableMemberKind
Describes the different kinds of C++ member functions which can be considered for inlining by the ana...
Enable inlining of dynamically dispatched methods, bifurcate paths when exact type info is unavailabl...
AnalysisDiagClients
AnalysisDiagClients - Set of available diagnostic clients for rendering analysis results.