[Cmake-commits] CMake branch, next, updated. v3.7.0-1266-gb38ffa4
Brad King
brad.king at kitware.com
Fri Nov 18 09:38:35 EST 2016
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via b38ffa4addb71b12e00a5b09052b0e24b59f6544 (commit)
via 6eb9ea1c74ff1bc39a6c5d9a77bb6bf3c7b03bbb (commit)
via f19677825d06e7671f82b4f50ee31880d1dc1652 (commit)
via 00e76959930c590e8e6f2ad6ee09f33eb51c4fb3 (commit)
from 81e1cb2159aad135d603c5aaac4d62ef6f6dd2a1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b38ffa4addb71b12e00a5b09052b0e24b59f6544
commit b38ffa4addb71b12e00a5b09052b0e24b59f6544
Merge: 81e1cb2 6eb9ea1
Author: Brad King <brad.king at kitware.com>
AuthorDate: Fri Nov 18 09:38:34 2016 -0500
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Nov 18 09:38:34 2016 -0500
Merge topic 'capture-clang-tidy-errors' into next
6eb9ea1c cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
f1967782 cmake: If ldd for LINK_WHAT_YOU_USE fails to run then report why
00e76959 cmake: Comment why we ignore the include-what-you-use return code
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6eb9ea1c74ff1bc39a6c5d9a77bb6bf3c7b03bbb
commit 6eb9ea1c74ff1bc39a6c5d9a77bb6bf3c7b03bbb
Author: Brad King <brad.king at kitware.com>
AuthorDate: Thu Nov 17 11:36:04 2016 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Fri Nov 18 09:37:13 2016 -0500
cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
When using `<LANG>_CLANG_TIDY` our internal launcher for the tool must
capture its return code and stderr and report them on failure.
Otherwise incorrect command lines silently fail.
Closes: #16435
diff --git a/Help/release/dev/capture-clang-tidy-errors.rst b/Help/release/dev/capture-clang-tidy-errors.rst
new file mode 100644
index 0000000..14c32e6
--- /dev/null
+++ b/Help/release/dev/capture-clang-tidy-errors.rst
@@ -0,0 +1,6 @@
+capture-clang-tidy-errors
+-------------------------
+
+* If a command specified by the :prop_tgt:`<LANG>_CLANG_TIDY` target property
+ returns non-zero at build time this is now treated as an error instead of
+ silently ignored.
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index dca5ffc..ff25427 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -358,14 +358,20 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
// Run the tidy command line. Capture its stdout and hide its stderr.
std::string stdOut;
- if (!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, CM_NULLPTR,
- &ret, CM_NULLPTR,
+ std::string stdErr;
+ if (!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, &stdErr, &ret,
+ CM_NULLPTR,
cmSystemTools::OUTPUT_NONE)) {
- std::cerr << "Error running '" << tidy_cmd[0] << "'\n";
+ std::cerr << "Error running '" << tidy_cmd[0] << "':\n" << stdErr;
return 1;
}
// Output the stdout from clang-tidy to stderr
std::cerr << stdOut;
+ // If clang-tidy exited with an error do the same.
+ if (ret != 0) {
+ std::cerr << stdErr;
+ return ret;
+ }
}
if (!lwyu.empty()) {
// Construct the ldd -r -u (link what you use lwyu) command line
diff --git a/Tests/RunCMake/ClangTidy/C-bad-Build-result.txt b/Tests/RunCMake/ClangTidy/C-bad-Build-result.txt
new file mode 100644
index 0000000..d197c91
--- /dev/null
+++ b/Tests/RunCMake/ClangTidy/C-bad-Build-result.txt
@@ -0,0 +1 @@
+[^0]
diff --git a/Tests/RunCMake/ClangTidy/C-bad-Build-stdout.txt b/Tests/RunCMake/ClangTidy/C-bad-Build-stdout.txt
new file mode 100644
index 0000000..2370ce1
--- /dev/null
+++ b/Tests/RunCMake/ClangTidy/C-bad-Build-stdout.txt
@@ -0,0 +1,2 @@
+stdout from bad command line arg '-bad'
+stderr from bad command line arg '-bad'
diff --git a/Tests/RunCMake/ClangTidy/C-bad.cmake b/Tests/RunCMake/ClangTidy/C-bad.cmake
new file mode 100644
index 0000000..aa54c08
--- /dev/null
+++ b/Tests/RunCMake/ClangTidy/C-bad.cmake
@@ -0,0 +1,3 @@
+enable_language(C)
+set(CMAKE_C_CLANG_TIDY "${PSEUDO_TIDY}" -bad)
+add_executable(main main.c)
diff --git a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake
index 27cd922..2f41e50 100644
--- a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake
@@ -20,3 +20,4 @@ if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake")
run_tidy(C-launch)
run_tidy(CXX-launch)
endif()
+run_tidy(C-bad)
diff --git a/Tests/RunCMake/pseudo_tidy.c b/Tests/RunCMake/pseudo_tidy.c
index c950d03..2feeb0f 100644
--- a/Tests/RunCMake/pseudo_tidy.c
+++ b/Tests/RunCMake/pseudo_tidy.c
@@ -1,9 +1,15 @@
#include <stdio.h>
+#include <string.h>
int main(int argc, char* argv[])
{
int i;
for (i = 1; i < argc; ++i) {
+ if (strcmp(argv[i], "-bad") == 0) {
+ fprintf(stdout, "stdout from bad command line arg '-bad'\n");
+ fprintf(stderr, "stderr from bad command line arg '-bad'\n");
+ return 1;
+ }
if (argv[i][0] != '-') {
fprintf(stdout, "%s:0:0: warning: message [checker]\n", argv[i]);
break;
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f19677825d06e7671f82b4f50ee31880d1dc1652
commit f19677825d06e7671f82b4f50ee31880d1dc1652
Author: Brad King <brad.king at kitware.com>
AuthorDate: Thu Nov 17 11:34:32 2016 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Fri Nov 18 09:33:48 2016 -0500
cmake: If ldd for LINK_WHAT_YOU_USE fails to run then report why
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 945913e..dca5ffc 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -378,11 +378,15 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
// Run the ldd -u -r command line.
// Capture its stdout and hide its stderr.
+ // Ignore its return code because the tool always returns non-zero
+ // if there are any warnings, but we just want to warn.
std::string stdOut;
- if (!cmSystemTools::RunSingleCommand(lwyu_cmd, &stdOut, CM_NULLPTR,
- &ret, CM_NULLPTR,
+ std::string stdErr;
+ if (!cmSystemTools::RunSingleCommand(lwyu_cmd, &stdOut, &stdErr, &ret,
+ CM_NULLPTR,
cmSystemTools::OUTPUT_NONE)) {
- std::cerr << "Error running '" << lwyu_cmd[0] << "'\n";
+ std::cerr << "Error running '" << lwyu_cmd[0] << "': " << stdErr
+ << "\n";
return 1;
}
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=00e76959930c590e8e6f2ad6ee09f33eb51c4fb3
commit 00e76959930c590e8e6f2ad6ee09f33eb51c4fb3
Author: Brad King <brad.king at kitware.com>
AuthorDate: Thu Nov 17 11:33:24 2016 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Fri Nov 18 09:32:17 2016 -0500
cmake: Comment why we ignore the include-what-you-use return code
The include-what-you-use tool always returns non-zero to indicate that
it did not actually produce an object file as Clang would from the same
command line. Add a comment explaining that this is why we ignore its
return code. Also update our `pseudo_iwyu` test suite tool to always
exit with an error too.
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 1db147a..945913e 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -327,6 +327,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
iwyu_cmd.insert(iwyu_cmd.end(), 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;
if (!cmSystemTools::RunSingleCommand(iwyu_cmd, CM_NULLPTR, &stdErr,
&ret, CM_NULLPTR,
diff --git a/Tests/RunCMake/pseudo_iwyu.c b/Tests/RunCMake/pseudo_iwyu.c
index 1e25de7..c761741 100644
--- a/Tests/RunCMake/pseudo_iwyu.c
+++ b/Tests/RunCMake/pseudo_iwyu.c
@@ -3,5 +3,6 @@
int main(void)
{
fprintf(stderr, "should add these lines:\n#include <...>\n");
- return 0;
+ /* include-what-you-use always returns failure */
+ return 1;
}
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list