Author: hokein Date: Mon Jul 11 02:47:04 2016 New Revision: 275051 URL: http://llvm.org/viewvc/llvm-project?rev=275051&view=rev Log: [clang-tidy] Pass absolute path to OptionsProvider::getOptions/getRawOptions.
Summary: Although there is no guarantee of getOptions/getRawOptions receiving an absolute path, we try to make it if possible. So FileOptionProvider subclasses don't have to convert the path to an absolute path. Reviewers: alexfh Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D22154 Added: clang-tools-extra/trunk/test/clang-tidy/list-checks.cpp Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp?rev=275051&r1=275050&r2=275051&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp Mon Jul 11 02:47:04 2016 @@ -218,15 +218,6 @@ FileOptionsProvider::FileOptionsProvider std::vector<OptionsSource> FileOptionsProvider::getRawOptions(StringRef FileName) { DEBUG(llvm::dbgs() << "Getting options for file " << FileName << "...\n"); - SmallString<256> FilePath(FileName); - - if (std::error_code EC = llvm::sys::fs::make_absolute(FilePath)) { - llvm::errs() << "Can't make absolute path from " << FileName << ": " - << EC.message() << "\n"; - // FIXME: Figure out what to do. - } else { - FileName = FilePath; - } std::vector<OptionsSource> RawOptions = DefaultOptionsProvider::getRawOptions(FileName); 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=275051&r1=275050&r2=275051&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Mon Jul 11 02:47:04 2016 @@ -313,13 +313,19 @@ static int clangTidyMain(int argc, const if (!PathList.empty()) { FileName = PathList.front(); } - ClangTidyOptions EffectiveOptions = OptionsProvider->getOptions(FileName); + + SmallString<256> FilePath(FileName); + if (std::error_code EC = llvm::sys::fs::make_absolute(FilePath)) { + llvm::errs() << "Can't make absolute path from " << FileName << ": " + << EC.message() << "\n"; + } + ClangTidyOptions EffectiveOptions = OptionsProvider->getOptions(FilePath); std::vector<std::string> EnabledChecks = getCheckNames(EffectiveOptions); if (ExplainConfig) { //FIXME: Show other ClangTidyOptions' fields, like ExtraArg. std::vector<clang::tidy::ClangTidyOptionsProvider::OptionsSource> - RawOptions = OptionsProvider->getRawOptions(FileName); + RawOptions = OptionsProvider->getRawOptions(FilePath); for (const std::string &Check : EnabledChecks) { for (auto It = RawOptions.rbegin(); It != RawOptions.rend(); ++It) { if (It->first.Checks && GlobList(*It->first.Checks).contains(Check)) { Added: clang-tools-extra/trunk/test/clang-tidy/list-checks.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/list-checks.cpp?rev=275051&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/list-checks.cpp (added) +++ clang-tools-extra/trunk/test/clang-tidy/list-checks.cpp Mon Jul 11 02:47:04 2016 @@ -0,0 +1,5 @@ +// REQUIRES: shell +// RUN: mkdir -p %T/clang-tidy/list-checks/ +// RUN: echo '{Checks: "-*,google-*"}' > %T/clang-tidy/.clang-tidy +// RUN: cd %T/clang-tidy/list-checks +// RUN: clang-tidy -list-checks | grep "^ *google-" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits