Make clang's static analyzer checks available through clang-tidy.
This is implemented in a way that the current static analyzer
architecture allows, in the future we might want to revisit this.
With this change static analyzer checks are available from clang-tidy
by specifying -checks=clang-analyzer-<name>.
This change also fixes the use of the compilation database to allow
clang-tidy to be used like any other clang tool.
llvm-svn: 194707
diff --git a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
index 47aefe7..b1c1e4d 100644
--- a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
+++ b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -16,6 +16,7 @@
//===----------------------------------------------------------------------===//
#include "../ClangTidy.h"
+#include "clang/Tooling/CommonOptionsParser.h"
#include "llvm/Support/CommandLine.h"
#include <vector>
@@ -26,8 +27,7 @@
cl::OptionCategory ClangTidyCategory("clang-tidy options");
-cl::list<std::string>
-Ranges(cl::Positional, cl::desc("<range0> [... <rangeN>]"), cl::OneOrMore);
+static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
static cl::opt<std::string> Checks(
"checks",
@@ -39,15 +39,11 @@
// FIXME: Add option to list name/description of all checks.
int main(int argc, const char **argv) {
- cl::ParseCommandLineOptions(argc, argv, "TBD\n");
- OwningPtr<clang::tooling::CompilationDatabase> Compilations(
- FixedCompilationDatabase::loadFromCommandLine(argc, argv));
- if (!Compilations)
- return 0;
- // FIXME: Load other compilation databases.
+ CommonOptionsParser OptionsParser(argc, argv);
SmallVector<clang::tidy::ClangTidyError, 16> Errors;
- clang::tidy::runClangTidy(Checks, *Compilations, Ranges, &Errors);
+ clang::tidy::runClangTidy(Checks, OptionsParser.getCompilations(),
+ OptionsParser.getSourcePathList(), &Errors);
clang::tidy::handleErrors(Errors, Fix);
return 0;