clang  3.7.0
Public Types | Public Member Functions | Public Attributes | List of all members
clang::AnalyzerOptions Class Reference

#include <AnalyzerOptions.h>

Inheritance diagram for clang::AnalyzerOptions:
[legend]
Collaboration diagram for clang::AnalyzerOptions:
[legend]

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)
 
bool getBooleanOption (Optional< bool > &V, StringRef Name, bool DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false)
 
int getOptionAsInteger (StringRef Name, int DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false)
 
StringRef getOptionAsString (StringRef Name, StringRef DefaultVal, const ento::CheckerBase *C=nullptr, bool SearchInParents=false)
 
UserModeKind 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. More...
 
IPAKind getIPAMode ()
 Returns the inter-procedural analysis mode. More...
 
bool mayInlineCXXMemberFunction (CXXInlineableMemberKind K)
 
bool mayInlineObjCMethod ()
 Returns true if ObjectiveC inlining is enabled, false otherwise. More...
 
bool includeTemporaryDtorsInCFG ()
 
bool mayInlineCXXStandardLibrary ()
 
bool mayInlineTemplateFunctions ()
 
bool mayInlineCXXAllocator ()
 
bool mayInlineCXXContainerMethods ()
 
bool mayInlineCXXSharedPtrDtor ()
 
bool shouldSuppressNullReturnPaths ()
 
bool shouldAvoidSuppressingNullArgumentPaths ()
 
bool shouldSuppressInlinedDefensiveChecks ()
 
bool shouldSuppressFromCXXStandardLibrary ()
 
bool shouldReportIssuesInMainSourceFile ()
 
bool shouldWriteStableReportFilename ()
 
bool shouldPrunePaths ()
 
bool shouldConditionalizeStaticInitializers ()
 
unsigned getAlwaysInlineSize ()
 
unsigned getMaxInlinableSize ()
 
bool shouldSynthesizeBodies ()
 
unsigned getGraphTrimInterval ()
 
unsigned getMaxTimesInlineLarge ()
 
unsigned getMaxNodesPerTopLevelFunction ()
 
 AnalyzerOptions ()
 

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 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. We get better code coverage when retry is enabled. More...
 
unsigned InlineMaxStackDepth
 The inlining stack depth limit. More...
 
AnalysisInliningMode InliningMode
 The mode of function selection used during inlining. More...
 

Detailed Description

Definition at line 124 of file AnalyzerOptions.h.

Member Typedef Documentation

typedef llvm::StringMap<std::string> clang::AnalyzerOptions::ConfigTable

Definition at line 126 of file AnalyzerOptions.h.

Constructor & Destructor Documentation

clang::AnalyzerOptions::AnalyzerOptions ( )
inline

Definition at line 513 of file AnalyzerOptions.h.

Member Function Documentation

unsigned AnalyzerOptions::getAlwaysInlineSize ( )

Definition at line 259 of file AnalyzerOptions.cpp.

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.

Parameters
[in]NameName for option to retrieve.
[in]DefaultValDefault value returned if no such option was specified.
[in]CThe 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]SearchInParentsIf 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 125 of file AnalyzerOptions.cpp.

References clang::ento::CheckerBase::getTagDescription(), and toString().

Referenced by clang::ento::GRBugReporter::generatePathDiagnostic(), 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.

Parameters
[in,out]VReturn value storage, returned if parameter contains an existing valid option, else it is used to store a return value
[in]NameName for option to retrieve.
[in]DefaultValDefault value returned if no such option was specified.
[in]CThe 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]SearchInParentsIf 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 142 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 286 of file AnalyzerOptions.cpp.

IPAKind AnalyzerOptions::getIPAMode ( )
unsigned AnalyzerOptions::getMaxInlinableSize ( )

Definition at line 265 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 298 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 292 of file AnalyzerOptions.cpp.

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.

Parameters
[in]NameName for option to retrieve.
[in]DefaultValDefault value returned if no such option was specified.
[in]CThe 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]SearchInParentsIf 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 230 of file AnalyzerOptions.cpp.

References clang::ento::CheckerBase::getTagDescription().

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.

Parameters
[in]NameName for option to retrieve.
[in]DefaultValDefault value returned if no such option was specified.
[in]CThe 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]SearchInParentsIf 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 249 of file AnalyzerOptions.cpp.

References clang::ento::CheckerBase::getTagDescription().

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 26 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 150 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 168 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 174 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.

See Also
CXXMemberInliningMode

Definition at line 73 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 180 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 156 of file AnalyzerOptions.cpp.

Referenced by mayInlineDecl().

bool AnalyzerOptions::mayInlineObjCMethod ( )

Returns true if ObjectiveC inlining is enabled, false otherwise.

Definition at line 187 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 162 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 199 of file AnalyzerOptions.cpp.

bool AnalyzerOptions::shouldConditionalizeStaticInitializers ( )

Returns true if 'static' initializers should be in conditional logic in the CFG.

Definition at line 325 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 321 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 217 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 211 of file AnalyzerOptions.cpp.

Referenced by clang::ento::LikelyFalsePositiveSuppressionBRVisitor::getEndPath().

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 205 of file AnalyzerOptions.cpp.

Referenced by clang::ento::SuppressInlineDefensiveChecksVisitor::SuppressInlineDefensiveChecksVisitor().

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 193 of file AnalyzerOptions.cpp.

bool AnalyzerOptions::shouldSynthesizeBodies ( )

Returns true if the analyzer engine should synthesize fake bodies for well-known functions.

Definition at line 317 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 224 of file AnalyzerOptions.cpp.

Member Data Documentation

AnalysisConstraints clang::AnalyzerOptions::AnalysisConstraintsOpt

Definition at line 134 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

AnalysisDiagClients clang::AnalyzerOptions::AnalysisDiagOpt

Definition at line 135 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

AnalysisPurgeMode clang::AnalyzerOptions::AnalysisPurgeOpt
AnalysisStores clang::AnalyzerOptions::AnalysisStoreOpt

Definition at line 133 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::AnalyzeAll

Definition at line 152 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::AnalyzeNestedBlocks

Definition at line 154 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::AnalyzerDisplayProgress

Definition at line 153 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

std::string clang::AnalyzerOptions::AnalyzeSpecificFunction

Definition at line 138 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

std::vector<std::pair<std::string, bool> > clang::AnalyzerOptions::CheckersControlList

Pair of checker name and enable/disable.

Definition at line 129 of file AnalyzerOptions.h.

Referenced by clang::ento::createCheckerManager(), and ParseAnalyzerArgs().

ConfigTable clang::AnalyzerOptions::Config

A key-value table of use-specified configuration values.

Definition at line 132 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs(), and 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 149 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

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 165 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs(), and clang::ento::ExprEngine::Visit().

unsigned clang::AnalyzerOptions::InlineMaxStackDepth

The inlining stack depth limit.

Definition at line 178 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

AnalysisInliningMode clang::AnalyzerOptions::InliningMode

The mode of function selection used during inlining.

Definition at line 181 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::maxBlockVisitOnPath

The maximum number of times the analyzer visits a block.

Definition at line 141 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs(), and clang::ento::ExprEngine::processCFGBlockEntrance().

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 175 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs(), and clang::ento::ExprEngine::processCFGBlockEntrance().

unsigned clang::AnalyzerOptions::PrintStats

Definition at line 171 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::ShowCheckerHelp

Definition at line 151 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::TrimGraph

Definition at line 167 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::UnoptimizedCFG

Definition at line 170 of file AnalyzerOptions.h.

Referenced by ParseAnalyzerArgs().

unsigned clang::AnalyzerOptions::visualizeExplodedGraphWithGraphViz
unsigned clang::AnalyzerOptions::visualizeExplodedGraphWithUbiGraph

The documentation for this class was generated from the following files: