forked from OSchip/llvm-project
[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 llvm-svn: 275051
This commit is contained in:
parent
cba9f80ba8
commit
d1218758e1
|
@ -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);
|
||||
|
|
|
@ -313,13 +313,19 @@ static int clangTidyMain(int argc, const char **argv) {
|
|||
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)) {
|
||||
|
|
|
@ -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-"
|
Loading…
Reference in New Issue