mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-31 20:44:18 +00:00
[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 llvm-svn: 324113
This commit is contained in:
parent
1a745a4ef6
commit
3a2cf8668f
@ -330,6 +330,9 @@ class ClangTool {
|
|||||||
/// Runs an action over all files specified in the command line.
|
/// Runs an action over all files specified in the command line.
|
||||||
///
|
///
|
||||||
/// \param Action Tool action.
|
/// \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);
|
int run(ToolAction *Action);
|
||||||
|
|
||||||
/// \brief Create an AST for each file specified in the command line and
|
/// \brief Create an AST for each file specified in the command line and
|
||||||
|
@ -388,6 +388,7 @@ int ClangTool::run(ToolAction *Action) {
|
|||||||
llvm::MemoryBuffer::getMemBuffer(MappedFile.second));
|
llvm::MemoryBuffer::getMemBuffer(MappedFile.second));
|
||||||
|
|
||||||
bool ProcessingFailed = false;
|
bool ProcessingFailed = false;
|
||||||
|
bool FileSkipped = false;
|
||||||
for (const auto &SourcePath : SourcePaths) {
|
for (const auto &SourcePath : SourcePaths) {
|
||||||
std::string File(getAbsolutePath(SourcePath));
|
std::string File(getAbsolutePath(SourcePath));
|
||||||
|
|
||||||
@ -401,12 +402,8 @@ int ClangTool::run(ToolAction *Action) {
|
|||||||
std::vector<CompileCommand> CompileCommandsForFile =
|
std::vector<CompileCommand> CompileCommandsForFile =
|
||||||
Compilations.getCompileCommands(File);
|
Compilations.getCompileCommands(File);
|
||||||
if (CompileCommandsForFile.empty()) {
|
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";
|
llvm::errs() << "Skipping " << File << ". Compile command not found.\n";
|
||||||
|
FileSkipped = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (CompileCommand &CompileCommand : CompileCommandsForFile) {
|
for (CompileCommand &CompileCommand : CompileCommandsForFile) {
|
||||||
@ -466,7 +463,7 @@ int ClangTool::run(ToolAction *Action) {
|
|||||||
Twine(InitialDirectory) + "\n!");
|
Twine(InitialDirectory) + "\n!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ProcessingFailed ? 1 : 0;
|
return ProcessingFailed ? 1 : (FileSkipped ? 2 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
Loading…
Reference in New Issue
Block a user