Wou*_*eek 6 c++ libc llvm clang clang-tidy
我不明白llvmlibc-restrict-system-libc-headersClang Tidy 中的检查(链接)。
我在 C++ 代码中包含 C 库,如下所示:
#include <cstddef>
Run Code Online (Sandbox Code Playgroud)
我应该更改什么来修复此 Clang Tidy 检查?它应该被修复吗?
该检查强制程序员使用编译器提供的 (libc) 标头。
它主要由开发 llvm 的 libc 的团队使用,以避免使用系统提供的标头。
来自 clang-tidy 项目的 Phabricator Web 界面:
这添加了一个新模块来执行特定于 llvm-libc 项目的标准。此更改还添加了第一个检查,该检查限制用户意外包含系统 libc 标头,这可能会导致难以检测的微妙错误。
并进一步
[...]我认为检查器名称应该通用,因为它不需要与 llvm-libc 结合在一起。其他项目可能有类似的需求。例如,他们不想意外包含系统 zlib.h -> 他们可能会发布捆绑的 zlib(例如,在third_party/zlib/ 中)。
感谢您的建议,一般检查听起来是个好主意。我可以看到它的用例,因为任何人都可以使用它。我花时间移植了 fuchsia 的检查并充实了面向用户的文档。
您可以通过在项目的包含目录中显式提供感兴趣的标头(此处为 libc 标头)并相应地调整链接路径来修复它。
要禁用它,您可以在 clang-tidy 的参数中指定不需要的检查。
CMake 示例:
set(CMAKE_C_CLANG_TIDY
clang-tidy;
-header-filter=.*;
-checks=*,-llvmlibc-restrict-system-libc-headers;
-warnings-as-errors=*;)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2617 次 |
| 最近记录: |