Author: ioeric Date: Fri Feb 2 10:19:22 2018 New Revision: 324113 URL: http://llvm.org/viewvc/llvm-project?rev=324113&view=rev Log: [Tooling] Returns non-zero status code when files are skipped.
Reviewers: hokein, bkramer Reviewed By: bkramer Subscribers: bkramer, klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D42361 Modified: cfe/trunk/include/clang/Tooling/Tooling.h cfe/trunk/lib/Tooling/Tooling.cpp Modified: cfe/trunk/include/clang/Tooling/Tooling.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Tooling.h?rev=324113&r1=324112&r2=324113&view=diff ============================================================================== --- cfe/trunk/include/clang/Tooling/Tooling.h (original) +++ cfe/trunk/include/clang/Tooling/Tooling.h Fri Feb 2 10:19:22 2018 @@ -330,6 +330,9 @@ class ClangTool { /// Runs an action over all files specified in the command line. /// /// \param Action Tool action. + /// + /// \returns 0 on success; 1 if any error occured; 2 if there is no error but + /// some files are skipped due to missing compile commands. int run(ToolAction *Action); /// \brief Create an AST for each file specified in the command line and Modified: cfe/trunk/lib/Tooling/Tooling.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Tooling.cpp?rev=324113&r1=324112&r2=324113&view=diff ============================================================================== --- cfe/trunk/lib/Tooling/Tooling.cpp (original) +++ cfe/trunk/lib/Tooling/Tooling.cpp Fri Feb 2 10:19:22 2018 @@ -388,6 +388,7 @@ int ClangTool::run(ToolAction *Action) { llvm::MemoryBuffer::getMemBuffer(MappedFile.second)); bool ProcessingFailed = false; + bool FileSkipped = false; for (const auto &SourcePath : SourcePaths) { std::string File(getAbsolutePath(SourcePath)); @@ -401,12 +402,8 @@ int ClangTool::run(ToolAction *Action) { std::vector<CompileCommand> CompileCommandsForFile = Compilations.getCompileCommands(File); if (CompileCommandsForFile.empty()) { - // FIXME: There are two use cases here: doing a fuzzy - // "find . -name '*.cc' |xargs tool" match, where as a user I don't care - // about the .cc files that were not found, and the use case where I - // specify all files I want to run over explicitly, where this should - // be an error. We'll want to add an option for this. llvm::errs() << "Skipping " << File << ". Compile command not found.\n"; + FileSkipped = true; continue; } for (CompileCommand &CompileCommand : CompileCommandsForFile) { @@ -466,7 +463,7 @@ int ClangTool::run(ToolAction *Action) { Twine(InitialDirectory) + "\n!"); } } - return ProcessingFailed ? 1 : 0; + return ProcessingFailed ? 1 : (FileSkipped ? 2 : 0); } namespace { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits