[clang-tools-extra] r245205 - [clang-tidy] Allow use of -list-checks option without need to pass source files.
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 17 03:03:27 PDT 2015
Author: alexfh
Date: Mon Aug 17 05:03:27 2015
New Revision: 245205
URL: http://llvm.org/viewvc/llvm-project?rev=245205&view=rev
Log:
[clang-tidy] Allow use of -list-checks option without need to pass source files.
Initialize CommonOptionsParser with ZeroOrOne NumOccurrenceFlag so callers can
pass -list-checks without the need to pass additional positional parameters,
then add dummy file if none were supplied.
http://reviews.llvm.org/D12070
Patch by Don Hinton!
Modified:
clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
clang-tools-extra/trunk/test/clang-tidy/validate-check-names.cpp
Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp?rev=245205&r1=245204&r2=245205&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Mon Aug 17 05:03:27 2015
@@ -262,17 +262,21 @@ static std::unique_ptr<ClangTidyOptionsP
}
static int clangTidyMain(int argc, const char **argv) {
- CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory);
+ CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory,
+ cl::ZeroOrMore);
auto OptionsProvider = createOptionsProvider();
if (!OptionsProvider)
return 1;
- std::string FileName = OptionsParser.getSourcePathList().front();
+ StringRef FileName("dummy");
+ auto PathList = OptionsParser.getSourcePathList();
+ if (!PathList.empty()) {
+ FileName = OptionsParser.getSourcePathList().front();
+ }
ClangTidyOptions EffectiveOptions = OptionsProvider->getOptions(FileName);
std::vector<std::string> EnabledChecks = getCheckNames(EffectiveOptions);
- // FIXME: Allow using --list-checks without positional arguments.
if (ListChecks) {
llvm::outs() << "Enabled checks:";
for (auto CheckName : EnabledChecks)
@@ -283,8 +287,9 @@ static int clangTidyMain(int argc, const
if (DumpConfig) {
EffectiveOptions.CheckOptions = getCheckOptions(EffectiveOptions);
- llvm::outs() << configurationAsText(ClangTidyOptions::getDefaults()
- .mergeWith(EffectiveOptions))
+ llvm::outs() << configurationAsText(
+ ClangTidyOptions::getDefaults().mergeWith(
+ EffectiveOptions))
<< "\n";
return 0;
}
@@ -295,12 +300,18 @@ static int clangTidyMain(int argc, const
return 1;
}
+ if (PathList.empty()) {
+ llvm::errs() << "Error: no input files specified.\n";
+ llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true);
+ return 1;
+ }
+
ProfileData Profile;
std::vector<ClangTidyError> Errors;
ClangTidyStats Stats =
runClangTidy(std::move(OptionsProvider), OptionsParser.getCompilations(),
- OptionsParser.getSourcePathList(), &Errors,
+ PathList, &Errors,
EnableCheckProfile ? &Profile : nullptr);
bool FoundErrors =
std::find_if(Errors.begin(), Errors.end(), [](const ClangTidyError &E) {
Modified: clang-tools-extra/trunk/test/clang-tidy/validate-check-names.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/validate-check-names.cpp?rev=245205&r1=245204&r2=245205&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/validate-check-names.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/validate-check-names.cpp Mon Aug 17 05:03:27 2015
@@ -1,2 +1,2 @@
// Check names may only contain alphanumeric characters, '-', '_', and '.'.
-// RUN: clang-tidy -checks=* -list-checks - -- | grep '^ ' | cut -b5- | not grep -v '^[a-zA-Z0-9_.\-]\+$'
+// RUN: clang-tidy -checks=* -list-checks | grep '^ ' | cut -b5- | not grep -v '^[a-zA-Z0-9_.\-]\+$'
More information about the cfe-commits
mailing list