clang
6.0.0
|
#include "clang/StaticAnalyzer/Core/AnalyzerOptions.h"
Public Types | |
typedef llvm::StringMap< std::string > | ConfigTable |
Public Member Functions | |
bool | getBooleanOption (StringRef Name, bool DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false) |
Interprets an option's string value as a boolean. More... | |
bool | getBooleanOption (Optional< bool > &V, StringRef Name, bool DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false) |
Variant that accepts a Optional value to cache the result. More... | |
int | getOptionAsInteger (StringRef Name, int DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false) |
Interprets an option's string value as an integer value. More... | |
StringRef | getOptionAsString (StringRef Name, StringRef DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false) |
Query an option's string value. More... | |
UserModeKind | getUserMode () |
Retrieves and sets the UserMode. More... | |
IPAKind | getIPAMode () |
Returns the inter-procedural analysis mode. More... | |
bool | mayInlineCXXMemberFunction (CXXInlineableMemberKind K) |
Returns the option controlling which C++ member functions will be considered for inlining. More... | |
bool | mayInlineObjCMethod () |
Returns true if ObjectiveC inlining is enabled, false otherwise. More... | |
bool | includeTemporaryDtorsInCFG () |
Returns whether or not the destructors for C++ temporary objects should be included in the CFG. More... | |
bool | includeImplicitDtorsInCFG () |
Returns whether or not implicit destructors for C++ objects should be included in the CFG. More... | |
bool | includeLifetimeInCFG () |
Returns whether or not end-of-lifetime information should be included in the CFG. More... | |
bool | includeLoopExitInCFG () |
Returns whether or not the end of the loop information should be included in the CFG. More... | |
bool | mayInlineCXXStandardLibrary () |
Returns whether or not C++ standard library functions may be considered for inlining. More... | |
bool | mayInlineTemplateFunctions () |
Returns whether or not templated functions may be considered for inlining. More... | |
bool | mayInlineCXXAllocator () |
Returns whether or not allocator call may be considered for inlining. More... | |
bool | mayInlineCXXContainerMethods () |
Returns whether or not methods of C++ container objects may be considered for inlining. More... | |
bool | mayInlineCXXSharedPtrDtor () |
Returns whether or not the destructor of C++ 'shared_ptr' may be considered for inlining. More... | |
bool | shouldSuppressNullReturnPaths () |
Returns whether or not paths that go through null returns should be suppressed. More... | |
bool | shouldAvoidSuppressingNullArgumentPaths () |
Returns whether a bug report should not be suppressed if its path includes a call with a null argument, even if that call has a null return. More... | |
bool | shouldSuppressInlinedDefensiveChecks () |
Returns whether or not diagnostics containing inlined defensive NULL checks should be suppressed. More... | |
bool | shouldSuppressFromCXXStandardLibrary () |
Returns whether or not diagnostics reported within the C++ standard library should be suppressed. More... | |
bool | shouldReportIssuesInMainSourceFile () |
Returns whether or not the diagnostic report should be always reported in the main source file and not the headers. More... | |
bool | shouldWriteStableReportFilename () |
Returns whether or not the report filename should be random or not. More... | |
bool | shouldPrunePaths () |
Returns whether irrelevant parts of a bug report path should be pruned out of the final output. More... | |
bool | shouldConditionalizeStaticInitializers () |
Returns true if 'static' initializers should be in conditional logic in the CFG. More... | |
unsigned | getAlwaysInlineSize () |
unsigned | getMaxInlinableSize () |
bool | shouldSynthesizeBodies () |
Returns true if the analyzer engine should synthesize fake bodies for well-known functions. More... | |
unsigned | getGraphTrimInterval () |
Returns how often nodes in the ExplodedGraph should be recycled to save memory. More... | |
unsigned | getMaxTimesInlineLarge () |
Returns the maximum times a large function could be inlined. More... | |
unsigned | getMinCFGSizeTreatFunctionsAsLarge () |
Returns the number of basic blocks a function needs to have to be considered large for the 'max-times-inline-large' config option. More... | |
unsigned | getMaxNodesPerTopLevelFunction () |
Returns the maximum number of nodes the analyzer can generate while exploring a top level function (for each exploded graph). More... | |
bool | shouldInlineLambdas () |
Returns true if lambdas should be inlined. More... | |
bool | shouldWidenLoops () |
Returns true if the analysis should try to widen loops. More... | |
bool | shouldUnrollLoops () |
Returns true if the analysis should try to unroll loops with known bounds. More... | |
bool | shouldDisplayNotesAsEvents () |
Returns true if the bug reporter should transparently treat extra note diagnostic pieces as event diagnostic pieces. More... | |
AnalyzerOptions () | |
Static Public Member Functions | |
static std::vector< StringRef > | getRegisteredCheckers (bool IncludeExperimental=false) |
Public Attributes | |
std::vector< std::pair< std::string, bool > > | CheckersControlList |
Pair of checker name and enable/disable. More... | |
ConfigTable | Config |
A key-value table of use-specified configuration values. More... | |
AnalysisStores | AnalysisStoreOpt |
AnalysisConstraints | AnalysisConstraintsOpt |
AnalysisDiagClients | AnalysisDiagOpt |
AnalysisPurgeMode | AnalysisPurgeOpt |
std::string | AnalyzeSpecificFunction |
unsigned | maxBlockVisitOnPath |
The maximum number of times the analyzer visits a block. More... | |
unsigned | DisableAllChecks: 1 |
Disable all analyzer checks. More... | |
unsigned | ShowCheckerHelp: 1 |
unsigned | ShowEnabledCheckerList: 1 |
unsigned | AnalyzeAll: 1 |
unsigned | AnalyzerDisplayProgress: 1 |
unsigned | AnalyzeNestedBlocks: 1 |
unsigned | eagerlyAssumeBinOpBifurcation: 1 |
The flag regulates if we should eagerly assume evaluations of conditionals, thus, bifurcating the path. More... | |
unsigned | TrimGraph: 1 |
unsigned | visualizeExplodedGraphWithGraphViz: 1 |
unsigned | visualizeExplodedGraphWithUbiGraph: 1 |
unsigned | UnoptimizedCFG: 1 |
unsigned | PrintStats: 1 |
unsigned | NoRetryExhausted: 1 |
Do not re-analyze paths leading to exhausted nodes with a different strategy. More... | |
unsigned | InlineMaxStackDepth |
The inlining stack depth limit. More... | |
AnalysisInliningMode | InliningMode |
The mode of function selection used during inlining. More... | |
Definition at line 124 of file AnalyzerOptions.h.
typedef llvm::StringMap<std::string> clang::AnalyzerOptions::ConfigTable |
Definition at line 126 of file AnalyzerOptions.h.
|
inline |
Definition at line 589 of file AnalyzerOptions.h.
unsigned AnalyzerOptions::getAlwaysInlineSize | ( | ) |
Definition at line 294 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
bool AnalyzerOptions::getBooleanOption | ( | StringRef | Name, |
bool | DefaultVal, | ||
const ento::CheckerBase * | C = nullptr , |
||
bool | SearchInParents = false |
||
) |
Interprets an option's string value as a boolean.
The "true" string is interpreted as true and the "false" string is interpreted as false.
If an option value is not provided, returns the given DefaultVal
.
[in] | Name | Name for option to retrieve. |
[in] | DefaultVal | Default value returned if no such option was specified. |
[in] | C | The optional checker parameter that can be used to restrict the search to the options of this particular checker (and its parents dependening on search mode). |
[in] | SearchInParents | If set to true and the searched option was not specified for the given checker the options for the parent packages will be searched as well. The inner packages take precedence over the outer ones. |
Definition at line 144 of file AnalyzerOptions.cpp.
Referenced by isVirtualCall(), and clang::ento::shouldIncludeAllocationSiteInLeakDiagnostics().
bool AnalyzerOptions::getBooleanOption | ( | Optional< bool > & | V, |
StringRef | Name, | ||
bool | DefaultVal, | ||
const ento::CheckerBase * | C = nullptr , |
||
bool | SearchInParents = false |
||
) |
Variant that accepts a Optional value to cache the result.
[in,out] | V | Return value storage, returned if parameter contains an existing valid option, else it is used to store a return value |
[in] | Name | Name for option to retrieve. |
[in] | DefaultVal | Default value returned if no such option was specified. |
[in] | C | The optional checker parameter that can be used to restrict the search to the options of this particular checker (and its parents dependening on search mode). |
[in] | SearchInParents | If set to true and the searched option was not specified for the given checker the options for the parent packages will be searched as well. The inner packages take precedence over the outer ones. |
Definition at line 161 of file AnalyzerOptions.cpp.
unsigned AnalyzerOptions::getGraphTrimInterval | ( | ) |
Returns how often nodes in the ExplodedGraph should be recycled to save memory.
This is controlled by the 'graph-trim-interval' config option. To disable node reclamation, set the option to "0".
Definition at line 321 of file AnalyzerOptions.cpp.
Referenced by clang::ento::ExprEngine::ExprEngine().
IPAKind AnalyzerOptions::getIPAMode | ( | ) |
Returns the inter-procedural analysis mode.
Definition at line 58 of file AnalyzerOptions.cpp.
References clang::IPAK_BasicInlining, clang::IPAK_DynamicDispatch, clang::IPAK_DynamicDispatchBifurcate, clang::IPAK_Inlining, clang::IPAK_None, and clang::IPAK_NotSet.
Referenced by mayInlineCallKind(), and clang::ento::AnalysisManager::shouldInlineCall().
unsigned AnalyzerOptions::getMaxInlinableSize | ( | ) |
Definition at line 300 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
unsigned AnalyzerOptions::getMaxNodesPerTopLevelFunction | ( | ) |
Returns the maximum number of nodes the analyzer can generate while exploring a top level function (for each exploded graph).
150000 is default; 0 means no limit.
This is controlled by the 'max-nodes' config option.
Definition at line 340 of file AnalyzerOptions.cpp.
unsigned AnalyzerOptions::getMaxTimesInlineLarge | ( | ) |
Returns the maximum times a large function could be inlined.
This is controlled by the 'max-times-inline-large' config option.
Definition at line 327 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
unsigned AnalyzerOptions::getMinCFGSizeTreatFunctionsAsLarge | ( | ) |
Returns the number of basic blocks a function needs to have to be considered large for the 'max-times-inline-large' config option.
This is controlled by the 'min-cfg-size-treat-functions-as-large' config option.
Definition at line 333 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
int AnalyzerOptions::getOptionAsInteger | ( | StringRef | Name, |
int | DefaultVal, | ||
const ento::CheckerBase * | C = nullptr , |
||
bool | SearchInParents = false |
||
) |
Interprets an option's string value as an integer value.
If an option value is not provided, returns the given DefaultVal
.
[in] | Name | Name for option to retrieve. |
[in] | DefaultVal | Default value returned if no such option was specified. |
[in] | C | The optional checker parameter that can be used to restrict the search to the options of this particular checker (and its parents dependening on search mode). |
[in] | SearchInParents | If set to true and the searched option was not specified for the given checker the options for the parent packages will be searched as well. The inner packages take precedence over the outer ones. |
Definition at line 265 of file AnalyzerOptions.cpp.
StringRef AnalyzerOptions::getOptionAsString | ( | StringRef | Name, |
StringRef | DefaultVal, | ||
const ento::CheckerBase * | C = nullptr , |
||
bool | SearchInParents = false |
||
) |
Query an option's string value.
If an option value is not provided, returns the given DefaultVal
.
[in] | Name | Name for option to retrieve. |
[in] | DefaultVal | Default value returned if no such option was specified. |
[in] | C | The optional checker parameter that can be used to restrict the search to the options of this particular checker (and its parents dependening on search mode). |
[in] | SearchInParents | If set to true and the searched option was not specified for the given checker the options for the parent packages will be searched as well. The inner packages take precedence over the outer ones. |
Definition at line 284 of file AnalyzerOptions.cpp.
|
static |
Definition at line 27 of file AnalyzerOptions.cpp.
AnalyzerOptions::UserModeKind AnalyzerOptions::getUserMode | ( | ) |
Retrieves and sets the UserMode.
This is a high-level option, which is used to set other low-level options. It is not accessible outside of AnalyzerOptions.
Definition at line 45 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::includeImplicitDtorsInCFG | ( | ) |
Returns whether or not implicit destructors for C++ objects should be included in the CFG.
This is controlled by the 'cfg-implicit-dtors' config option, which accepts the values "true" and "false".
Definition at line 175 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::includeLifetimeInCFG | ( | ) |
Returns whether or not end-of-lifetime information should be included in the CFG.
This is controlled by the 'cfg-lifetime' config option, which accepts the values "true" and "false".
Definition at line 181 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::includeLoopExitInCFG | ( | ) |
Returns whether or not the end of the loop information should be included in the CFG.
This is controlled by the 'cfg-loopexit' config option, which accepts the values "true" and "false".
Definition at line 186 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::includeTemporaryDtorsInCFG | ( | ) |
Returns whether or not the destructors for C++ temporary objects should be included in the CFG.
This is controlled by the 'cfg-temporary-dtors' config option, which accepts the values "true" and "false".
Definition at line 169 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::mayInlineCXXAllocator | ( | ) |
Returns whether or not allocator call may be considered for inlining.
This is controlled by the 'c++-allocator-inlining' config option, which accepts the values "true" and "false".
Definition at line 203 of file AnalyzerOptions.cpp.
Referenced by mayInlineCallKind(), and clang::ento::ExprEngine::ProcessNewAllocator().
bool AnalyzerOptions::mayInlineCXXContainerMethods | ( | ) |
Returns whether or not methods of C++ container objects may be considered for inlining.
This is controlled by the 'c++-container-inlining' config option, which accepts the values "true" and "false".
Definition at line 209 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
bool AnalyzerOptions::mayInlineCXXMemberFunction | ( | CXXInlineableMemberKind | K | ) |
Returns the option controlling which C++ member functions will be considered for inlining.
This is controlled by the 'c++-inlining' config option.
Definition at line 92 of file AnalyzerOptions.cpp.
References clang::CIMK_Constructors, clang::CIMK_Destructors, clang::CIMK_MemberFunctions, clang::CIMK_None, and clang::IPAK_Inlining.
Referenced by mayInlineCallKind().
bool AnalyzerOptions::mayInlineCXXSharedPtrDtor | ( | ) |
Returns whether or not the destructor of C++ 'shared_ptr' may be considered for inlining.
This covers std::shared_ptr, std::tr1::shared_ptr, and boost::shared_ptr, and indeed any destructor named "~shared_ptr".
This is controlled by the 'c++-shared_ptr-inlining' config option, which accepts the values "true" and "false".
Definition at line 215 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
bool AnalyzerOptions::mayInlineCXXStandardLibrary | ( | ) |
Returns whether or not C++ standard library functions may be considered for inlining.
This is controlled by the 'c++-stdlib-inlining' config option, which accepts the values "true" and "false".
Definition at line 191 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
bool AnalyzerOptions::mayInlineObjCMethod | ( | ) |
Returns true if ObjectiveC inlining is enabled, false otherwise.
Definition at line 222 of file AnalyzerOptions.cpp.
Referenced by mayInlineCallKind().
bool AnalyzerOptions::mayInlineTemplateFunctions | ( | ) |
Returns whether or not templated functions may be considered for inlining.
This is controlled by the 'c++-template-inlining' config option, which accepts the values "true" and "false".
Definition at line 197 of file AnalyzerOptions.cpp.
Referenced by mayInlineDecl().
bool AnalyzerOptions::shouldAvoidSuppressingNullArgumentPaths | ( | ) |
Returns whether a bug report should not be suppressed if its path includes a call with a null argument, even if that call has a null return.
This option has no effect when shouldSuppressNullReturnPaths() is false.
This is a counter-heuristic to avoid false negatives.
This is controlled by the 'avoid-suppressing-null-argument-paths' config option, which accepts the values "true" and "false".
Definition at line 234 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldConditionalizeStaticInitializers | ( | ) |
Returns true if 'static' initializers should be in conditional logic in the CFG.
Definition at line 367 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldDisplayNotesAsEvents | ( | ) |
Returns true if the bug reporter should transparently treat extra note diagnostic pieces as event diagnostic pieces.
Useful when the diagnostic consumer doesn't support the extra note pieces.
This is controlled by the 'extra-notes-as-events' option, which defaults to false when unset.
Definition at line 389 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldInlineLambdas | ( | ) |
Returns true if lambdas should be inlined.
Otherwise a sink node will be generated each time a LambdaExpr is visited.
Definition at line 371 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldPrunePaths | ( | ) |
Returns whether irrelevant parts of a bug report path should be pruned out of the final output.
This is controlled by the 'prune-paths' config option, which accepts the values "true" and "false".
Definition at line 363 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldReportIssuesInMainSourceFile | ( | ) |
Returns whether or not the diagnostic report should be always reported in the main source file and not the headers.
This is controlled by the 'report-in-main-source-file' config option, which accepts the values "true" and "false".
Definition at line 252 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldSuppressFromCXXStandardLibrary | ( | ) |
Returns whether or not diagnostics reported within the C++ standard library should be suppressed.
This is controlled by the 'suppress-c++-stdlib' config option, which accepts the values "true" and "false".
Definition at line 246 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldSuppressInlinedDefensiveChecks | ( | ) |
Returns whether or not diagnostics containing inlined defensive NULL checks should be suppressed.
This is controlled by the 'suppress-inlined-defensive-checks' config option, which accepts the values "true" and "false".
Definition at line 240 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldSuppressNullReturnPaths | ( | ) |
Returns whether or not paths that go through null returns should be suppressed.
This is a heuristic for avoiding bug reports with paths that go through inlined functions that are more defensive than their callers.
This is controlled by the 'suppress-null-return-paths' config option, which accepts the values "true" and "false".
Definition at line 228 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldSynthesizeBodies | ( | ) |
Returns true if the analyzer engine should synthesize fake bodies for well-known functions.
Definition at line 359 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldUnrollLoops | ( | ) |
Returns true if the analysis should try to unroll loops with known bounds.
This is controlled by the 'unroll-loops' config option.
Definition at line 383 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldWidenLoops | ( | ) |
Returns true if the analysis should try to widen loops.
This is controlled by the 'widen-loops' config option.
Definition at line 377 of file AnalyzerOptions.cpp.
bool AnalyzerOptions::shouldWriteStableReportFilename | ( | ) |
Returns whether or not the report filename should be random or not.
This is controlled by the 'stable-report-filename' config option, which accepts the values "true" and "false". Default = false
Definition at line 259 of file AnalyzerOptions.cpp.
AnalysisConstraints clang::AnalyzerOptions::AnalysisConstraintsOpt |
Definition at line 137 of file AnalyzerOptions.h.
AnalysisDiagClients clang::AnalyzerOptions::AnalysisDiagOpt |
Definition at line 138 of file AnalyzerOptions.h.
AnalysisPurgeMode clang::AnalyzerOptions::AnalysisPurgeOpt |
Definition at line 139 of file AnalyzerOptions.h.
Referenced by clang::ento::ExprEngine::processCallExit().
AnalysisStores clang::AnalyzerOptions::AnalysisStoreOpt |
Definition at line 136 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::AnalyzeAll |
Definition at line 156 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::AnalyzeNestedBlocks |
Definition at line 158 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::AnalyzerDisplayProgress |
Definition at line 157 of file AnalyzerOptions.h.
std::string clang::AnalyzerOptions::AnalyzeSpecificFunction |
Definition at line 141 of file AnalyzerOptions.h.
std::vector<std::pair<std::string, bool> > clang::AnalyzerOptions::CheckersControlList |
Pair of checker name and enable/disable.
Definition at line 132 of file AnalyzerOptions.h.
Referenced by getCheckerOptList().
ConfigTable clang::AnalyzerOptions::Config |
A key-value table of use-specified configuration values.
Definition at line 135 of file AnalyzerOptions.h.
Referenced by clang::ento::CheckerRegistry::validateCheckerOptions().
unsigned clang::AnalyzerOptions::DisableAllChecks |
Disable all analyzer checks.
This flag allows one to disable analyzer checks on the code processed by the given analysis consumer. Note, the code will get parsed and the command-line options will get checked.
Definition at line 152 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::eagerlyAssumeBinOpBifurcation |
The flag regulates if we should eagerly assume evaluations of conditionals, thus, bifurcating the path.
This flag indicates how the engine should handle expressions such as: 'x = (y != 0)'. When this flag is true then the subexpression 'y != 0' will be eagerly assumed to be true or false, thus evaluating it to the integers 0 or 1 respectively. The upside is that this can increase analysis precision until we have a better way to lazily evaluate such logic. The downside is that it eagerly bifurcates paths.
Definition at line 169 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::InlineMaxStackDepth |
The inlining stack depth limit.
Definition at line 182 of file AnalyzerOptions.h.
Referenced by mayInlineDecl().
AnalysisInliningMode clang::AnalyzerOptions::InliningMode |
The mode of function selection used during inlining.
Definition at line 185 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::maxBlockVisitOnPath |
The maximum number of times the analyzer visits a block.
Definition at line 144 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::NoRetryExhausted |
Do not re-analyze paths leading to exhausted nodes with a different strategy.
We get better code coverage when retry is enabled.
Definition at line 179 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::PrintStats |
Definition at line 175 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::ShowCheckerHelp |
Definition at line 154 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::ShowEnabledCheckerList |
Definition at line 155 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::TrimGraph |
Definition at line 171 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::UnoptimizedCFG |
Definition at line 174 of file AnalyzerOptions.h.
unsigned clang::AnalyzerOptions::visualizeExplodedGraphWithGraphViz |
Definition at line 172 of file AnalyzerOptions.h.
Referenced by clang::ento::AnalysisManager::shouldVisualize().
unsigned clang::AnalyzerOptions::visualizeExplodedGraphWithUbiGraph |
Definition at line 173 of file AnalyzerOptions.h.
Referenced by clang::ento::AnalysisManager::shouldVisualize().