clang  3.7.0
Classes | Public Types | Public Member Functions | List of all members
clang::ento::CheckerRegistry Class Reference

#include <CheckerRegistry.h>

Classes

struct  CheckerInfo
 

Public Types

typedef void(* InitializationFunction )(CheckerManager &)
 
typedef std::vector< CheckerInfoCheckerInfoList
 

Public Member Functions

void addChecker (InitializationFunction fn, StringRef fullName, StringRef desc)
 
template<class T >
void addChecker (StringRef fullName, StringRef desc)
 
void initializeManager (CheckerManager &mgr, SmallVectorImpl< CheckerOptInfo > &opts) const
 
void validateCheckerOptions (const AnalyzerOptions &opts, DiagnosticsEngine &diags) const
 Check if every option corresponds to a specific checker or package. More...
 
void printHelp (raw_ostream &out, size_t maxNameChars=30) const
 

Detailed 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".

Definition at line 80 of file CheckerRegistry.h.

Member Typedef Documentation

Definition at line 94 of file CheckerRegistry.h.

typedef void(* clang::ento::CheckerRegistry::InitializationFunction)(CheckerManager &)

Initialization functions perform any necessary setup for a checker. They should include a call to CheckerManager::registerChecker.

Definition at line 84 of file CheckerRegistry.h.

Member Function Documentation

void CheckerRegistry::addChecker ( InitializationFunction  fn,
StringRef  fullName,
StringRef  desc 
)

Adds a checker to the registry. Use this non-templated overload when your checker requires custom initialization.

Definition at line 84 of file CheckerRegistry.cpp.

References PackageSeparator.

Referenced by addChecker().

template<class T >
void clang::ento::CheckerRegistry::addChecker ( StringRef  fullName,
StringRef  desc 
)
inline

Adds a checker to the registry. Use this templated overload when your checker does not require any custom initialization.

Definition at line 111 of file CheckerRegistry.h.

References addChecker().

void CheckerRegistry::initializeManager ( CheckerManager mgr,
SmallVectorImpl< CheckerOptInfo > &  opts 
) const

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.

Definition at line 97 of file CheckerRegistry.cpp.

References checkerNameLT(), collectCheckers(), and clang::ento::CheckerManager::setCurrentCheckName().

void CheckerRegistry::printHelp ( raw_ostream &  out,
size_t  maxNameChars = 30 
) const

Prints the name and description of all checkers in this registry. This output is not intended to be machine-parseable.

Definition at line 139 of file CheckerRegistry.cpp.

References checkerNameLT().

void CheckerRegistry::validateCheckerOptions ( const AnalyzerOptions opts,
DiagnosticsEngine diags 
) const

Check if every option corresponds to a specific checker or package.

Definition at line 117 of file CheckerRegistry.cpp.

References clang::AnalyzerOptions::Config, and clang::DiagnosticsEngine::Report().


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