class CheckerRegistry
Declaration
class CheckerRegistry { /* full declaration omitted */ };
Description
Manages a set of available checkers for running a static analysis. The checkers are organized into packages by full name, where including a package will recursively include all subpackages and checkers within it. For example, the checker "core.builtin.NoReturnFunctionChecker" will be included if initializeManager() is called with an option of "core", "core.builtin", or the full name "core.builtin.NoReturnFunctionChecker".
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:89
Member Variables
- private clang::ento::CheckerRegistryData& Data
- private clang::DiagnosticsEngine& Diags
- private clang::AnalyzerOptions& AnOpts
Method Overview
- public CheckerRegistry(clang::ento::CheckerRegistryData & Data, ArrayRef<std::string> Plugins, clang::DiagnosticsEngine & Diags, clang::AnalyzerOptions & AnOpts, ArrayRef<std::function<void (CheckerRegistry &)>> CheckerRegistrationFns = {})
- public void addChecker(clang::ento::RegisterCheckerFn Fn, clang::ento::ShouldRegisterFunction sfn, llvm::StringRef FullName, llvm::StringRef Desc, llvm::StringRef DocsUri, bool IsHidden)
- public template <class T>void addChecker(llvm::StringRef FullName, llvm::StringRef Desc, llvm::StringRef DocsUri, bool IsHidden = false)
- public void addCheckerOption(llvm::StringRef OptionType, llvm::StringRef CheckerFullName, llvm::StringRef OptionName, llvm::StringRef DefaultValStr, llvm::StringRef Description, llvm::StringRef DevelopmentStatus, bool IsHidden = false)
- public void addDependency(llvm::StringRef FullName, llvm::StringRef Dependency)
- public void addPackage(llvm::StringRef FullName)
- public void addPackageOption(llvm::StringRef OptionType, llvm::StringRef PackageFullName, llvm::StringRef OptionName, llvm::StringRef DefaultValStr, llvm::StringRef Description, llvm::StringRef DevelopmentStatus, bool IsHidden = false)
- public void addWeakDependency(llvm::StringRef FullName, llvm::StringRef Dependency)
- public void initializeManager(clang::ento::CheckerManager & CheckerMgr) const
- private template <typename MGR, typename T>static void initializeManager(MGR & mgr)
- public void initializeRegistry(const clang::ento::CheckerManager & Mgr)
- private void resolveCheckerAndPackageOptions()
- private template <bool IsWeak>void resolveDependencies()
- private template <typename T>static bool returnTrue(const clang::ento::CheckerManager & mgr)
- public void validateCheckerOptions() const
Methods
¶CheckerRegistry(
clang::ento::CheckerRegistryData& Data,
ArrayRef<std::string> Plugins,
clang::DiagnosticsEngine& Diags,
clang::AnalyzerOptions& AnOpts,
ArrayRef<
std::function<void(CheckerRegistry&)>>
CheckerRegistrationFns = {})
CheckerRegistry(
clang::ento::CheckerRegistryData& Data,
ArrayRef<std::string> Plugins,
clang::DiagnosticsEngine& Diags,
clang::AnalyzerOptions& AnOpts,
ArrayRef<
std::function<void(CheckerRegistry&)>>
CheckerRegistrationFns = {})
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:91
Parameters
- clang::ento::CheckerRegistryData& Data
- ArrayRef<std::string> Plugins
- clang::DiagnosticsEngine& Diags
- clang::AnalyzerOptions& AnOpts
- ArrayRef<std::function<void(CheckerRegistry&)>> CheckerRegistrationFns = {}
¶void addChecker(
clang::ento::RegisterCheckerFn Fn,
clang::ento::ShouldRegisterFunction sfn,
llvm::StringRef FullName,
llvm::StringRef Desc,
llvm::StringRef DocsUri,
bool IsHidden)
void addChecker(
clang::ento::RegisterCheckerFn Fn,
clang::ento::ShouldRegisterFunction sfn,
llvm::StringRef FullName,
llvm::StringRef Desc,
llvm::StringRef DocsUri,
bool IsHidden)
Description
Adds a checker to the registry. Use this non-templated overload when your checker requires custom initialization.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:118
Parameters
- clang::ento::RegisterCheckerFn Fn
- clang::ento::ShouldRegisterFunction sfn
- llvm::StringRef FullName
- llvm::StringRef Desc
- llvm::StringRef DocsUri
- bool IsHidden
¶template <class T>
void addChecker(llvm::StringRef FullName,
llvm::StringRef Desc,
llvm::StringRef DocsUri,
bool IsHidden = false)
template <class T>
void addChecker(llvm::StringRef FullName,
llvm::StringRef Desc,
llvm::StringRef DocsUri,
bool IsHidden = false)
Description
Adds a checker to the registry. Use this templated overload when your checker does not require any custom initialization. This function isn't really needed and probably causes more headaches than the tiny convenience that it provides, but external plugins might use it, and there isn't a strong incentive to remove it.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:128
Templates
- T
Parameters
- llvm::StringRef FullName
- llvm::StringRef Desc
- llvm::StringRef DocsUri
- bool IsHidden = false
¶void addCheckerOption(
llvm::StringRef OptionType,
llvm::StringRef CheckerFullName,
llvm::StringRef OptionName,
llvm::StringRef DefaultValStr,
llvm::StringRef Description,
llvm::StringRef DevelopmentStatus,
bool IsHidden = false)
void addCheckerOption(
llvm::StringRef OptionType,
llvm::StringRef CheckerFullName,
llvm::StringRef OptionName,
llvm::StringRef DefaultValStr,
llvm::StringRef Description,
llvm::StringRef DevelopmentStatus,
bool IsHidden = false)
Description
Registers an option to a given checker. A checker option will always have the following format: CheckerFullName:OptionName=Value And can be specified from the command line like this: -analyzer-config CheckerFullName:OptionName=Value Options for unknown checkers, or unknown options for a given checker, or invalid value types for that given option are reported as an error in non-compatibility mode.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:154
Parameters
- llvm::StringRef OptionType
- llvm::StringRef CheckerFullName
- llvm::StringRef OptionName
- llvm::StringRef DefaultValStr
- llvm::StringRef Description
- llvm::StringRef DevelopmentStatus
- bool IsHidden = false
¶void addDependency(llvm::StringRef FullName,
llvm::StringRef Dependency)
void addDependency(llvm::StringRef FullName,
llvm::StringRef Dependency)
Description
Makes the checker with the full name \p fullName depend on the checker called \p dependency.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:139
Parameters
- llvm::StringRef FullName
- llvm::StringRef Dependency
¶void addPackage(llvm::StringRef FullName)
void addPackage(llvm::StringRef FullName)
Description
Adds a package to the registry.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:160
Parameters
- llvm::StringRef FullName
¶void addPackageOption(
llvm::StringRef OptionType,
llvm::StringRef PackageFullName,
llvm::StringRef OptionName,
llvm::StringRef DefaultValStr,
llvm::StringRef Description,
llvm::StringRef DevelopmentStatus,
bool IsHidden = false)
void addPackageOption(
llvm::StringRef OptionType,
llvm::StringRef PackageFullName,
llvm::StringRef OptionName,
llvm::StringRef DefaultValStr,
llvm::StringRef Description,
llvm::StringRef DevelopmentStatus,
bool IsHidden = false)
Description
Registers an option to a given package. A package option will always have the following format: PackageFullName:OptionName=Value And can be specified from the command line like this: -analyzer-config PackageFullName:OptionName=Value Options for unknown packages, or unknown options for a given package, or invalid value types for that given option are reported as an error in non-compatibility mode.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:171
Parameters
- llvm::StringRef OptionType
- llvm::StringRef PackageFullName
- llvm::StringRef OptionName
- llvm::StringRef DefaultValStr
- llvm::StringRef Description
- llvm::StringRef DevelopmentStatus
- bool IsHidden = false
¶void addWeakDependency(llvm::StringRef FullName,
llvm::StringRef Dependency)
void addWeakDependency(llvm::StringRef FullName,
llvm::StringRef Dependency)
Description
Makes the checker with the full name \p fullName weak depend on the checker called \p dependency.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:143
Parameters
- llvm::StringRef FullName
- llvm::StringRef Dependency
¶void initializeManager(
clang::ento::CheckerManager& CheckerMgr) const
void initializeManager(
clang::ento::CheckerManager& CheckerMgr) const
Description
Initializes a CheckerManager by calling the initialization functions for all checkers specified by the given CheckerOptInfo list. The order of this list is significant; later options can be used to reverse earlier ones. This can be used to exclude certain checkers in an included package.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:181
Parameters
- clang::ento::CheckerManager& CheckerMgr
¶template <typename MGR, typename T>
static void initializeManager(MGR& mgr)
template <typename MGR, typename T>
static void initializeManager(MGR& mgr)
Description
Default initialization function for checkers -- since CheckerManager includes this header, we need to make it a template parameter, and since the checker must be a template parameter as well, we can't put this in the cpp file.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:107
Templates
- MGR
- T
Parameters
- MGR& mgr
¶void initializeRegistry(
const clang::ento::CheckerManager& Mgr)
void initializeRegistry(
const clang::ento::CheckerManager& Mgr)
Description
Collects all enabled checkers in the field EnabledCheckers. It preserves the order of insertion, as dependencies have to be enabled before the checkers that depend on them.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:99
Parameters
- const clang::ento::CheckerManager& Mgr
¶void resolveCheckerAndPackageOptions()
void resolveCheckerAndPackageOptions()
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:188
¶template <bool IsWeak>
void resolveDependencies()
template <bool IsWeak>
void resolveDependencies()
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:187
Templates
- bool IsWeak
¶template <typename T>
static bool returnTrue(
const clang::ento::CheckerManager& mgr)
template <typename T>
static bool returnTrue(
const clang::ento::CheckerManager& mgr)
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:111
Templates
- T
Parameters
- const clang::ento::CheckerManager& mgr
¶void validateCheckerOptions() const
void validateCheckerOptions() const
Description
Check if every option corresponds to a specific checker or package.
Declared at: clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h:184