我正在使用clang-tidy作为linter构建一个C++项目(cmake -DCMAKE_CXX_CLANG_TIDY = clang-tidy)。

更新系统后(我相信Fedora 28-> 29,cmake 3.11-> 3.12),当clang-tidy报告一些clang-diagnostic-error(我现在无法修复...)时,我将无法再构建任何文件。我相当确定clang-diagnostic-errors不会更早中断构建……但是我不能百分百确定。

编辑:更改发生在clang-tidy中,现在发现错误时它返回一个非零的退出代码。

是否有可能抑制这些错误,就像“警告即错误”相反?

最佳答案

不知道是解决方案还是解决方法,但这可以解决问题(在我的操作系统中...):

cmake -DCMAKE_CXX_CLANG_TIDY="${PATH_TO_SCRIPT}/suppress_exit_status.sh;clang-tidy"

脚本的PATH_TO_SCRIPT是exclude_exit_status.sh的绝对路径,如下所示:
#!/bin/sh
$@||echo Command \"$@\" failed with exit code $?

||如果是“或”运算符,则仅在第一个操作数失败时才执行第二个操作数。看来cmake会从命令中捕获标准错误并将其抛出,因此出现错误消息。

我想不出一种更优雅的方式来做到这一点,不可能将||直接扔到CMAKE_CXX_CLANG_TIDY中。

09-30 15:04
查看更多