mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
Merge topic 'iwyu_errors'
fcacc319d9 IWYU: Return error code if user enables error reporting
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8406
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "cmcmd.h"
|
||||
|
||||
#include <functional>
|
||||
#include <iterator>
|
||||
|
||||
#include <cm/optional>
|
||||
#include <cmext/algorithm>
|
||||
@@ -346,7 +347,6 @@ int HandleIWYU(const std::string& runCmd, const std::string& /* sourceFile */,
|
||||
cmList iwyu_cmd{ runCmd, cmList::EmptyElements::Yes };
|
||||
cm::append(iwyu_cmd, orig_cmd.begin() + 1, orig_cmd.end());
|
||||
// Run the iwyu command line. Capture its stderr and hide its stdout.
|
||||
// Ignore its return code because the tool always returns non-zero.
|
||||
std::string stdErr;
|
||||
int ret;
|
||||
if (!cmSystemTools::RunSingleCommand(iwyu_cmd, nullptr, &stdErr, &ret,
|
||||
@@ -360,8 +360,15 @@ int HandleIWYU(const std::string& runCmd, const std::string& /* sourceFile */,
|
||||
std::cerr << "Warning: include-what-you-use reported diagnostics:\n"
|
||||
<< stdErr << "\n";
|
||||
}
|
||||
// always return 0 we don't want to break the compile
|
||||
return 0;
|
||||
// Older versions of iwyu always returned a non-zero exit code,
|
||||
// so ignore it unless the user has enabled errors.
|
||||
auto has_error_opt = std::find_if(
|
||||
iwyu_cmd.cbegin(), iwyu_cmd.cend(),
|
||||
[](std::string const& opt) { return cmHasLiteralPrefix(opt, "--error"); });
|
||||
bool errors_enabled = has_error_opt != iwyu_cmd.cend() &&
|
||||
has_error_opt != iwyu_cmd.cbegin() &&
|
||||
*std::prev(has_error_opt) == "-Xiwyu";
|
||||
return errors_enabled ? ret : 0;
|
||||
}
|
||||
|
||||
int HandleTidy(const std::string& runCmd, const std::string& sourceFile,
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1,4 @@
|
||||
Warning: include-what-you-use reported diagnostics:
|
||||
should add these lines:
|
||||
*
|
||||
#include <\.\.\.>
|
||||
3
Tests/RunCMake/IncludeWhatYouUse/C-error.cmake
Normal file
3
Tests/RunCMake/IncludeWhatYouUse/C-error.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
enable_language(C)
|
||||
set(CMAKE_C_INCLUDE_WHAT_YOU_USE "${PSEUDO_IWYU}" -Xiwyu --error)
|
||||
add_executable(main main.c)
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1,4 @@
|
||||
Warning: include-what-you-use reported diagnostics:
|
||||
should add these lines:
|
||||
*
|
||||
#include <\.\.\.>
|
||||
3
Tests/RunCMake/IncludeWhatYouUse/CXX-error.cmake
Normal file
3
Tests/RunCMake/IncludeWhatYouUse/CXX-error.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
enable_language(CXX)
|
||||
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "$<1:${PSEUDO_IWYU}>" -Xiwyu --error)
|
||||
add_executable(main main.cxx)
|
||||
@@ -16,6 +16,8 @@ endfunction()
|
||||
|
||||
run_iwyu(C)
|
||||
run_iwyu(CXX)
|
||||
run_iwyu(C-error)
|
||||
run_iwyu(CXX-error)
|
||||
if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake")
|
||||
run_iwyu(C-launch)
|
||||
run_iwyu(CXX-launch)
|
||||
|
||||
Reference in New Issue
Block a user