我想将clang-tidy集成到我们的C和C ++,基于CMake的项目中,该项目使用自定义GCC工具链进行编译。
我尝试按照本教程进行设置CMAKE_CXX_CLANG_TIDY。我还尝试通过设置并指向其目录CMAKE_EXPORT_COMPILE_COMMANDS来生成编译数据库。ONrun-clang-tidy.py
在这两种情况下,我都遇到(相同)一些可能与Clang和GCC之间的差异有关的错误:
-Wlogical-op)。由于编译器是GCC,因此文件可以正确构建,并且将标志写入编译数据库,但是会clang-tidy抱怨。O_CLOEXEC来提高安全性并强制关闭文件,但是尝试使用此定义会导致未定义的标识符错误(即使我们的GCC编译了代码)。作为未找到功能的示例,有clock_gettime。我们的代码使用C11标准和C ++ 14标准进行编译,而没有GNU扩展:
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_CXX_EXTENSIONS OFF)
Run Code Online (Sandbox Code Playgroud)
定制工具链是交叉编译工具链,可在Linux上运行并编译为FreeBSD。
_GNU_SOURCE/ _POSIX_SOURCE)。如果是这种情况,我该如何检查?如果没有,我应该另外使用clang-tidy吗?编辑
按照@ pablo285的要求,对于单个文件,我会收到2条警告,然后按照我的添加--warnings-as-errors=*,构建停止:
error: unknown warning option '-Wlogical-op' ; did you mean '-Wlong-long'? [clang-diagnostic-error]
<file path>: error: use of undeclared identifier 'O_CLOEXEC' [clang-diagnostic-error]
O_WRONLY | O_CLOEXEC
^
Run Code Online (Sandbox Code Playgroud)
我决定编写一个Python脚本来替换clang-tidy,从CMake接收命令行并对其进行编辑以修复各种错误。这是我尝试的命令行修改:
-isystem <dir>。我还添加了内容, …