summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidy.cpp11
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidy.h6
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp13
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h6
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyOptions.h26
-rw-r--r--clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp9
-rw-r--r--clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h8
7 files changed, 52 insertions, 27 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp
index 84a208ed12d..c9395497bcb 100644
--- a/clang-tools-extra/clang-tidy/ClangTidy.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp
@@ -285,24 +285,21 @@ void ClangTidyCheck::setName(StringRef Name) {
CheckName = Name.str();
}
-std::vector<std::string> getCheckNames(StringRef EnableChecksRegex,
- StringRef DisableChecksRegex) {
+std::vector<std::string> getCheckNames(const ClangTidyOptions &Options) {
SmallVector<ClangTidyError, 8> Errors;
- clang::tidy::ClangTidyContext Context(&Errors, EnableChecksRegex,
- DisableChecksRegex);
+ clang::tidy::ClangTidyContext Context(&Errors, Options);
ClangTidyASTConsumerFactory Factory(Context);
return Factory.getCheckNames();
}
-void runClangTidy(StringRef EnableChecksRegex, StringRef DisableChecksRegex,
+void runClangTidy(const ClangTidyOptions &Options,
const tooling::CompilationDatabase &Compilations,
ArrayRef<std::string> Ranges,
SmallVectorImpl<ClangTidyError> *Errors) {
// FIXME: Ranges are currently full files. Support selecting specific
// (line-)ranges.
ClangTool Tool(Compilations, Ranges);
- clang::tidy::ClangTidyContext Context(Errors, EnableChecksRegex,
- DisableChecksRegex);
+ clang::tidy::ClangTidyContext Context(Errors, Options);
ClangTidyDiagnosticConsumer DiagConsumer(Context);
Tool.setDiagnosticConsumer(&DiagConsumer);
diff --git a/clang-tools-extra/clang-tidy/ClangTidy.h b/clang-tools-extra/clang-tidy/ClangTidy.h
index a6a326de762..a7ba04c4592 100644
--- a/clang-tools-extra/clang-tidy/ClangTidy.h
+++ b/clang-tools-extra/clang-tidy/ClangTidy.h
@@ -11,6 +11,7 @@
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANG_TIDY_H
#include "ClangTidyDiagnosticConsumer.h"
+#include "ClangTidyOptions.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/SourceManager.h"
@@ -115,11 +116,10 @@ private:
/// \brief Fills the list of check names that are enabled when the provided
/// filters are applied.
-std::vector<std::string> getCheckNames(StringRef EnableChecksRegex,
- StringRef DisableChecksRegex);
+std::vector<std::string> getCheckNames(const ClangTidyOptions &Options);
/// \brief Run a set of clang-tidy checks on a set of files.
-void runClangTidy(StringRef EnableChecksRegex, StringRef DisableChecksRegex,
+void runClangTidy(const ClangTidyOptions &Options,
const tooling::CompilationDatabase &Compilations,
ArrayRef<std::string> Ranges,
SmallVectorImpl<ClangTidyError> *Errors);
diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
index 44d35d97475..2a680cdcad1 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
@@ -18,6 +18,7 @@
#include "ClangTidyDiagnosticConsumer.h"
+#include "ClangTidyOptions.h"
#include "clang/Frontend/DiagnosticRenderer.h"
#include "llvm/ADT/SmallString.h"
@@ -113,19 +114,17 @@ ClangTidyMessage::ClangTidyMessage(StringRef Message,
ClangTidyError::ClangTidyError(StringRef CheckName)
: CheckName(CheckName) {}
-ChecksFilter::ChecksFilter(StringRef EnableChecksRegex,
- StringRef DisableChecksRegex)
- : EnableChecks(EnableChecksRegex), DisableChecks(DisableChecksRegex) {}
+ChecksFilter::ChecksFilter(const ClangTidyOptions &Options)
+ : EnableChecks(Options.EnableChecksRegex),
+ DisableChecks(Options.DisableChecksRegex) {}
bool ChecksFilter::isCheckEnabled(StringRef Name) {
return EnableChecks.match(Name) && !DisableChecks.match(Name);
}
ClangTidyContext::ClangTidyContext(SmallVectorImpl<ClangTidyError> *Errors,
- StringRef EnableChecksRegex,
- StringRef DisableChecksRegex)
- : Errors(Errors), DiagEngine(nullptr),
- Filter(EnableChecksRegex, DisableChecksRegex) {}
+ const ClangTidyOptions &Options)
+ : Errors(Errors), DiagEngine(nullptr), Filter(Options) {}
DiagnosticBuilder ClangTidyContext::diag(
StringRef CheckName, SourceLocation Loc, StringRef Description,
diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
index ab934e4221e..6ba690ef245 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
@@ -28,6 +28,8 @@ class CompilationDatabase;
namespace tidy {
+struct ClangTidyOptions;
+
/// \brief A message from a clang-tidy check.
///
/// Note that this is independent of a \c SourceManager.
@@ -59,7 +61,7 @@ struct ClangTidyError {
/// \brief Filters checks by name.
class ChecksFilter {
public:
- ChecksFilter(StringRef EnableChecksRegex, StringRef DisableChecksRegex);
+ ChecksFilter(const ClangTidyOptions& Options);
bool isCheckEnabled(StringRef Name);
private:
@@ -79,7 +81,7 @@ private:
class ClangTidyContext {
public:
ClangTidyContext(SmallVectorImpl<ClangTidyError> *Errors,
- StringRef EnableChecksRegex, StringRef DisableChecksRegex);
+ const ClangTidyOptions &Options);
/// \brief Report any errors detected using this method.
///
diff --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.h b/clang-tools-extra/clang-tidy/ClangTidyOptions.h
new file mode 100644
index 00000000000..84dc2c22709
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.h
@@ -0,0 +1,26 @@
+//===--- ClangTidyOptions.h - clang-tidy ------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANG_TIDY_OPTIONS_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANG_TIDY_OPTIONS_H
+
+namespace clang {
+namespace tidy {
+
+/// \brief Contains options for clang-tidy.
+struct ClangTidyOptions {
+ ClangTidyOptions() : EnableChecksRegex(".*") {}
+ std::string EnableChecksRegex;
+ std::string DisableChecksRegex;
+};
+
+} // end namespace tidy
+} // end namespace clang
+
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANG_TIDY_OPTIONS_H
diff --git a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
index b4465bf8e5a..9284a8b038a 100644
--- a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
+++ b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -49,18 +49,21 @@ static cl::opt<bool> ListChecks("list-checks",
int main(int argc, const char **argv) {
CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory);
+ clang::tidy::ClangTidyOptions Options;
+ Options.EnableChecksRegex = Checks;
+ Options.DisableChecksRegex = DisableChecks;
+
// FIXME: Allow using --list-checks without positional arguments.
if (ListChecks) {
llvm::outs() << "Enabled checks:";
- for (auto CheckName : clang::tidy::getCheckNames(Checks, DisableChecks))
+ for (auto CheckName : clang::tidy::getCheckNames(Options))
llvm::outs() << "\n " << CheckName;
llvm::outs() << "\n\n";
return 0;
}
SmallVector<clang::tidy::ClangTidyError, 16> Errors;
- clang::tidy::runClangTidy(Checks, DisableChecks,
- OptionsParser.getCompilations(),
+ clang::tidy::runClangTidy(Options, OptionsParser.getCompilations(),
OptionsParser.getSourcePathList(), &Errors);
clang::tidy::handleErrors(Errors, Fix);
diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
index 8b3d9c6a6bf..b18a0767f47 100644
--- a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
+++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
@@ -43,7 +43,7 @@ template <typename T>
std::string runCheckOnCode(StringRef Code,
SmallVectorImpl<ClangTidyError> &Errors) {
T Check;
- ClangTidyContext Context(&Errors, ".*", "");
+ ClangTidyContext Context(&Errors, ClangTidyOptions());
ClangTidyDiagnosticConsumer DiagConsumer(Context);
Check.setContext(&Context);
std::vector<std::string> ArgCXX11(1, "-std=c++11");
@@ -59,10 +59,8 @@ std::string runCheckOnCode(StringRef Code,
return "";
DiagConsumer.finish();
tooling::Replacements Fixes;
- for (SmallVector<ClangTidyError, 16>::const_iterator I = Errors.begin(),
- E = Errors.end();
- I != E; ++I)
- Fixes.insert(I->Fix.begin(), I->Fix.end());
+ for (const ClangTidyError &Error : Errors)
+ Fixes.insert(Error.Fix.begin(), Error.Fix.end());
return tooling::applyAllReplacements(Code, Fixes);
}
OpenPOWER on IntegriCloud