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;