diff options
author | Jordy Rose <jediknil@belkadan.com> | 2011-08-16 21:24:21 +0000 |
---|---|---|
committer | Jordy Rose <jediknil@belkadan.com> | 2011-08-16 21:24:21 +0000 |
commit | 59cce71af6ff9e9faf1a4250dae87df73cd68495 (patch) | |
tree | 4b8e93eea2299a5f89e5e70f6f14c2ae26e558ee /clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp | |
parent | d7c6c9141a1db25971b1859eca5456cc484fb990 (diff) | |
download | llvm-59cce71af6ff9e9faf1a4250dae87df73cd68495.zip llvm-59cce71af6ff9e9faf1a4250dae87df73cd68495.tar.gz llvm-59cce71af6ff9e9faf1a4250dae87df73cd68495.tar.bz2 |
[analyzer] Overhaul of checker registration in preparation for basic plugin support. Removes support for checker groups (we can add them back in later if we decide they are still useful), and -analyzer-checker-help output is a little worse for the time being (no packages).
llvm-svn: 137758
Diffstat (limited to 'clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp b/clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp index 29c1cd1..8ed74a2 100644 --- a/clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp +++ b/clang/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp @@ -13,9 +13,10 @@ #include "clang/StaticAnalyzer/Frontend/CheckerRegistration.h" #include "clang/StaticAnalyzer/Frontend/FrontendActions.h" -#include "../Checkers/ClangSACheckerProvider.h" +#include "clang/StaticAnalyzer/Checkers/ClangCheckers.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" -#include "clang/StaticAnalyzer/Core/CheckerProvider.h" +#include "clang/StaticAnalyzer/Core/CheckerOptInfo.h" +#include "clang/StaticAnalyzer/Core/CheckerRegistry.h" #include "clang/Frontend/AnalyzerOptions.h" #include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Basic/Diagnostic.h" @@ -26,9 +27,17 @@ using namespace clang; using namespace ento; -CheckerManager *ento::registerCheckers(const AnalyzerOptions &opts, - const LangOptions &langOpts, - Diagnostic &diags) { +static void registerCheckers(CheckerRegistry ®istry, + ArrayRef<std::string> plugins) { + registerBuiltinCheckers(registry); + + // FIXME: register plugins. +} + +CheckerManager *ento::createCheckerManager(const AnalyzerOptions &opts, + const LangOptions &langOpts, + ArrayRef<std::string> plugins, + Diagnostic &diags) { llvm::OwningPtr<CheckerManager> checkerMgr(new CheckerManager(langOpts)); SmallVector<CheckerOptInfo, 8> checkerOpts; @@ -37,11 +46,9 @@ CheckerManager *ento::registerCheckers(const AnalyzerOptions &opts, checkerOpts.push_back(CheckerOptInfo(opt.first.c_str(), opt.second)); } - llvm::OwningPtr<CheckerProvider> provider(createClangSACheckerProvider()); - provider->registerCheckers(*checkerMgr, - checkerOpts.data(), checkerOpts.size()); - - // FIXME: Load CheckerProviders from plugins. + CheckerRegistry allCheckers; + registerCheckers(allCheckers, plugins); + allCheckers.initializeManager(*checkerMgr, checkerOpts); checkerMgr->finishedCheckerRegistration(); @@ -54,12 +61,11 @@ CheckerManager *ento::registerCheckers(const AnalyzerOptions &opts, return checkerMgr.take(); } -void ento::printCheckerHelp(raw_ostream &OS) { - OS << "OVERVIEW: Clang Static Analyzer Checkers List\n"; - OS << '\n'; - - llvm::OwningPtr<CheckerProvider> provider(createClangSACheckerProvider()); - provider->printHelp(OS); +void ento::printCheckerHelp(raw_ostream &out, ArrayRef<std::string> plugins) { + out << "OVERVIEW: Clang Static Analyzer Checkers List\n\n"; + out << "USAGE: -analyzer-checker <CHECKER or PACKAGE,...>\n\n"; - // FIXME: Load CheckerProviders from plugins. + CheckerRegistry allCheckers; + registerCheckers(allCheckers, plugins); + allCheckers.printHelp(out); } |