我正在使用clang-tidy作为linter(cmake -DCMAKE_CXX_CLANG_TIDY = clang-tidy)构建C ++项目。
更新系统后(我相信Fedora 28-> 29,cmake 3.11-> 3.12),当clang-tidy报告一些clang-diagnostic-error(我现在无法修复...)时,我将无法再构建任何文件。 。我很确定clang-diagnostic-error不会早点中断构建……但是我不能百分百确定。
编辑:更改发生在clang-tidy中,现在发现错误时它返回一个非零的退出代码。
是否可以抑制这些错误,就像“ -warnings-as-errors”的反面一样?
答案 0 :(得分:1)
不确定是解决方案还是解决方法,但这可以解决问题(在我的操作系统中...):
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。