diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy/tool')
| -rw-r--r-- | clang-tools-extra/clang-tidy/tool/CMakeLists.txt | 18 | ||||
| -rw-r--r-- | clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp | 56 | ||||
| -rw-r--r-- | clang-tools-extra/clang-tidy/tool/Makefile | 25 |
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 |

