Thanks! I didn't see this warning when running check-clang-tools on my machine. Fixed in r330327.
On Thu, Apr 19, 2018 at 7:39 AM, Mikael Holmén <mikael.hol...@ericsson.com> wrote: > Hi, > > > On 04/18/2018 10:54 AM, Haojian Wu via cfe-commits wrote: > >> Author: hokein >> Date: Wed Apr 18 01:54:28 2018 >> New Revision: 330245 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=330245&view=rev >> Log: >> [clang-tidy] Fix clang-tidy doesn't read .clangtidy configuration file. >> >> Summary: Fix https://bugs.llvm.org/show_bug.cgi?id=34900. >> >> Reviewers: alexfh >> >> Reviewed By: alexfh >> >> Subscribers: JonasToth, klimek, xazax.hun, cfe-commits >> >> Differential Revision: https://reviews.llvm.org/D45697 >> >> Added: >> clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp >> Modified: >> clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp >> clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.h >> 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=330245&r1=330244&r2=330245&view=diff >> ============================================================ >> ================== >> --- clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp (original) >> +++ clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.cpp Wed Apr 18 >> 01:54:28 2018 >> @@ -204,9 +204,12 @@ ConfigOptionsProvider::getRawOptions(llv >> FileOptionsProvider::FileOptionsProvider( >> const ClangTidyGlobalOptions &GlobalOptions, >> const ClangTidyOptions &DefaultOptions, >> - const ClangTidyOptions &OverrideOptions) >> + const ClangTidyOptions &OverrideOptions, >> + llvm::IntrusiveRefCntPtr<vfs::FileSystem> VFS) >> : DefaultOptionsProvider(GlobalOptions, DefaultOptions), >> - OverrideOptions(OverrideOptions) { >> + OverrideOptions(OverrideOptions), FS(std::move(VFS)) { >> + if (!FS) >> + FS = vfs::getRealFileSystem(); >> ConfigHandlers.emplace_back(".clang-tidy", parseConfiguration); >> } >> @@ -224,14 +227,19 @@ FileOptionsProvider::FileOptionsProvider >> std::vector<OptionsSource> >> FileOptionsProvider::getRawOptions(StringRef FileName) { >> DEBUG(llvm::dbgs() << "Getting options for file " << FileName << >> "...\n"); >> + assert(FS && "FS must be set."); >> + >> + llvm::SmallString<128> AbsoluteFilePath(FileName); >> + if (std::error_code ec = FS->makeAbsolute(AbsoluteFilePath)) >> + return {}; >> >> > > This causes a compilation warning: > > ../tools/clang/tools/extra/clang-tidy/ClangTidyOptions.cpp:233:23: error: > unused variable 'ec' [-Werror,-Wunused-variable] > if (std::error_code ec = FS->makeAbsolute(AbsoluteFilePath)) > ^ > 1 error generated. > > Regards, > Mikael > > > > std::vector<OptionsSource> RawOptions = >> - DefaultOptionsProvider::getRawOptions(FileName); >> + DefaultOptionsProvider::getRawOptions(AbsoluteFilePath.str()); >> OptionsSource CommandLineOptions(OverrideOptions, >> OptionsSourceTypeCheckCommandL >> ineOption); >> // Look for a suitable configuration file in all parent directories >> of the >> // file. Start with the immediate parent directory and move up. >> - StringRef Path = llvm::sys::path::parent_path(FileName); >> + StringRef Path = llvm::sys::path::parent_path(AbsoluteFilePath.str()); >> for (StringRef CurrentPath = Path; !CurrentPath.empty(); >> CurrentPath = llvm::sys::path::parent_path(CurrentPath)) { >> llvm::Optional<OptionsSource> Result; >> >> Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.h >> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/ >> clang-tidy/ClangTidyOptions.h?rev=330245&r1=330244&r2=330245&view=diff >> ============================================================ >> ================== >> --- clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.h (original) >> +++ clang-tools-extra/trunk/clang-tidy/ClangTidyOptions.h Wed Apr 18 >> 01:54:28 2018 >> @@ -13,7 +13,9 @@ >> #include "llvm/ADT/Optional.h" >> #include "llvm/ADT/StringMap.h" >> #include "llvm/ADT/StringRef.h" >> +#include "llvm/ADT/IntrusiveRefCntPtr.h" >> #include "llvm/Support/ErrorOr.h" >> +#include "clang/Basic/VirtualFileSystem.h" >> #include <functional> >> #include <map> >> #include <string> >> @@ -221,7 +223,8 @@ public: >> /// whatever options are read from the configuration file. >> FileOptionsProvider(const ClangTidyGlobalOptions &GlobalOptions, >> const ClangTidyOptions &DefaultOptions, >> - const ClangTidyOptions &OverrideOptions); >> + const ClangTidyOptions &OverrideOptions, >> + llvm::IntrusiveRefCntPtr<vfs::FileSystem> FS = >> nullptr); >> /// \brief Initializes the \c FileOptionsProvider instance with a >> custom set >> /// of configuration file handlers. >> @@ -255,6 +258,7 @@ protected: >> llvm::StringMap<OptionsSource> CachedOptions; >> ClangTidyOptions OverrideOptions; >> ConfigFileHandlers ConfigHandlers; >> + llvm::IntrusiveRefCntPtr<vfs::FileSystem> FS; >> }; >> /// \brief Parses LineFilter from JSON and stores it to the \p >> Options. >> >> 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=330245&r1=330244&r2= >> 330245&view=diff >> ============================================================ >> ================== >> --- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original) >> +++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Wed Apr 18 >> 01:54:28 2018 >> @@ -286,7 +286,8 @@ static void printProfileData(const Profi >> OS.flush(); >> } >> -static std::unique_ptr<ClangTidyOptionsProvider> >> createOptionsProvider() { >> +static std::unique_ptr<ClangTidyOptionsProvider> createOptionsProvider( >> + llvm::IntrusiveRefCntPtr<vfs::FileSystem> FS) { >> ClangTidyGlobalOptions GlobalOptions; >> if (std::error_code Err = parseLineFilter(LineFilter, GlobalOptions)) >> { >> llvm::errs() << "Invalid LineFilter: " << Err.message() << >> "\n\nUsage:\n"; >> @@ -334,7 +335,7 @@ static std::unique_ptr<ClangTidyOptionsP >> } >> } >> return llvm::make_unique<FileOptionsProvider>(GlobalOptions, >> DefaultOptions, >> - OverrideOptions); >> + OverrideOptions, >> std::move(FS)); >> } >> llvm::IntrusiveRefCntPtr<vfs::FileSystem> >> @@ -364,8 +365,13 @@ getVfsOverlayFromFile(const std::string >> static int clangTidyMain(int argc, const char **argv) { >> CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory, >> cl::ZeroOrMore); >> + llvm::IntrusiveRefCntPtr<vfs::FileSystem> BaseFS( >> + VfsOverlay.empty() ? vfs::getRealFileSystem() >> + : getVfsOverlayFromFile(VfsOverlay)); >> + if (!BaseFS) >> + return 1; >> - auto OwningOptionsProvider = createOptionsProvider(); >> + auto OwningOptionsProvider = createOptionsProvider(BaseFS); >> auto *OptionsProvider = OwningOptionsProvider.get(); >> if (!OptionsProvider) >> return 1; >> @@ -432,12 +438,6 @@ static int clangTidyMain(int argc, const >> llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true); >> return 1; >> } >> - llvm::IntrusiveRefCntPtr<vfs::FileSystem> BaseFS( >> - VfsOverlay.empty() ? vfs::getRealFileSystem() >> - : getVfsOverlayFromFile(VfsOverlay)); >> - if (!BaseFS) >> - return 1; >> - >> ProfileData Profile; >> llvm::InitializeAllTargetInfos(); >> >> Added: clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp >> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/ >> test/clang-tidy/read_file_config.cpp?rev=330245&view=auto >> ============================================================ >> ================== >> --- clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp (added) >> +++ clang-tools-extra/trunk/test/clang-tidy/read_file_config.cpp Wed Apr >> 18 01:54:28 2018 >> @@ -0,0 +1,12 @@ >> +// RUN: mkdir -p %T/read-file-config/ >> +// RUN: cp %s %T/read-file-config/test.cpp >> +// RUN: echo 'Checks: "-*,modernize-use-nullptr"' > >> %T/read-file-config/.clang-tidy >> +// RUN: echo '[{"command": "cc -c -o test.o test.cpp", "directory": >> "%T/read-file-config", "file": "%T/read-file-config/test.cpp"}]' > >> %T/read-file-config/compile_commands.json >> +// RUN: clang-tidy %T/read-file-config/test.cpp | not grep "warning: >> .*\[clang-analyzer-deadcode.DeadStores\]$" >> +// RUN: clang-tidy -checks="-*,clang-analyzer-*" >> %T/read-file-config/test.cpp | grep "warning: .*\[clang-analyzer-deadcode.De >> adStores\]$" >> + >> +void f() { >> + int x; >> + x = 1; >> + x = 2; >> +} >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits