blob: d93c48ab01ed4bfcab2a64b3374eccd06783e7a2 [file] [log] [blame]
Alexander Kornienkodea8fba2012-07-16 12:46:48 +00001//===- tools/clang-check/ClangCheck.cpp - Clang check tool ----------------===//
Manuel Klimekcb971c62012-04-04 12:07:46 +00002//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file implements a clang-check tool that runs the
11// clang::SyntaxOnlyAction over a number of translation units.
12//
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000013// This tool uses the Clang Tooling infrastructure, see
14// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
15// for details on setting it up with LLVM source tree.
16//
Manuel Klimekcb971c62012-04-04 12:07:46 +000017//===----------------------------------------------------------------------===//
18
19#include "llvm/Support/CommandLine.h"
20#include "clang/Frontend/FrontendActions.h"
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000021#include "clang/Tooling/CommandLineClangTool.h"
Manuel Klimekcb971c62012-04-04 12:07:46 +000022#include "clang/Tooling/Tooling.h"
23
24using namespace clang::tooling;
25using namespace llvm;
26
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000027static const char *MoreHelpText =
28 "\tFor example, to run clang-check on all files in a subtree of the\n"
29 "\tsource tree, use:\n"
Alexander Kornienko140d5132012-07-12 14:34:23 +000030 "\n"
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000031 "\t find path/in/subtree -name '*.cpp'|xargs clang-check\n"
Alexander Kornienko140d5132012-07-12 14:34:23 +000032 "\n"
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000033 "\tor using a specific build path:\n"
Alexander Kornienko140d5132012-07-12 14:34:23 +000034 "\n"
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000035 "\t find path/in/subtree -name '*.cpp'|xargs clang-check -p build/path\n"
Alexander Kornienko140d5132012-07-12 14:34:23 +000036 "\n"
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000037 "\tNote, that path/in/subtree and current directory should follow the\n"
38 "\trules described above.\n"
39 "\n";
Alexander Kornienko140d5132012-07-12 14:34:23 +000040
Manuel Klimek30318e62012-04-18 07:41:50 +000041int main(int argc, const char **argv) {
Alexander Kornienkodea8fba2012-07-16 12:46:48 +000042 CommandLineClangTool Tool;
43 cl::extrahelp MoreHelp(MoreHelpText);
44 Tool.initialize(argc, argv);
Manuel Klimekcb971c62012-04-04 12:07:46 +000045 return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>());
46}