summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/tool
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-tidy/tool')
-rw-r--r--clang-tools-extra/clang-tidy/tool/CMakeLists.txt18
-rw-r--r--clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp56
-rw-r--r--clang-tools-extra/clang-tidy/tool/Makefile25
3 files changed, 99 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/tool/CMakeLists.txt b/clang-tools-extra/clang-tidy/tool/CMakeLists.txt
new file mode 100644
index 00000000000..27d511fdb23
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/tool/CMakeLists.txt
@@ -0,0 +1,18 @@
+set(LLVM_LINK_COMPONENTS
+ ${LLVM_TARGETS_TO_BUILD}
+ asmparser
+ bitreader
+ support
+ mc
+ )
+
+add_clang_executable(clang-tidy
+ ClangTidyMain.cpp
+ )
+target_link_libraries(clang-tidy
+ clangTidy
+ )
+
+install(TARGETS clang-tidy
+ RUNTIME DESTINATION bin)
+
diff --git a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
new file mode 100644
index 00000000000..aed545697fb
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -0,0 +1,56 @@
+//===--- tools/extra/clang-tidy/ClangTidyMain.cpp - Clang tidy tool -------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file This file implements a clang-tidy tool.
+///
+/// This tool uses the Clang Tooling infrastructure, see
+/// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
+/// for details on setting it up with LLVM source tree.
+///
+//===----------------------------------------------------------------------===//
+
+#include "../ClangTidy.h"
+#include "clang/Driver/OptTable.h"
+#include "clang/Driver/Options.h"
+#include "llvm/Support/CommandLine.h"
+#include <vector>
+
+using namespace clang::ast_matchers;
+using namespace clang::driver;
+using namespace clang::tooling;
+using namespace llvm;
+
+cl::OptionCategory ClangTidyCategory("clang-tidy options");
+
+cl::list<std::string>
+Ranges(cl::Positional, cl::desc("<range0> [... <rangeN>]"), cl::OneOrMore);
+
+static cl::opt<std::string> Checks(
+ "checks",
+ cl::desc("Regular expression matching the names of the checks to be run."),
+ cl::init(".*"), cl::cat(ClangTidyCategory));
+static cl::opt<bool> Fix("fix", cl::desc("Fix detected errors if possible."),
+ cl::init(false), cl::cat(ClangTidyCategory));
+
+// 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.
+
+ SmallVector<clang::tidy::ClangTidyError, 16> Errors;
+ clang::tidy::runClangTidy(Checks, *Compilations, Ranges, &Errors);
+ clang::tidy::handleErrors(Errors, Fix);
+
+ return 0;
+}
diff --git a/clang-tools-extra/clang-tidy/tool/Makefile b/clang-tools-extra/clang-tidy/tool/Makefile
new file mode 100644
index 00000000000..31b8766c8ea
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/tool/Makefile
@@ -0,0 +1,25 @@
+##===- clang-tidy/tool/Makefile ----------------------------*- Makefile -*-===##
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+##===----------------------------------------------------------------------===##
+
+CLANG_LEVEL := ../../../..
+
+TOOLNAME = clang-tidy
+
+# No plugins, optimize startup time.
+TOOL_NO_EXPORTS = 1
+
+include $(CLANG_LEVEL)/../../Makefile.config
+LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option
+USEDLIBS = clangTidy.a clangTidyLLVMModule.a clangTidyGoogleModule.a \
+ clangFormat.a clangASTMatchers.a clangTooling.a clangFrontend.a \
+ clangSerialization.a clangDriver.a clangParse.a clangSema.a \
+ clangAnalysis.a clangRewriteFrontend.a clangRewriteCore.a \
+ clangEdit.a clangAST.a clangLex.a clangBasic.a
+
+include $(CLANG_LEVEL)/Makefile
OpenPOWER on IntegriCloud