IWYU(或 include-what-you-use)是一款可以查找 C/C++ 代码中冗余的 #include 并建议缺少的 #include 的程序,现已发布。
“包含你所使用的内容”意味着:对于 foo.cc 中使用的每个符号(类型、变量、函数或宏),foo.cc 或 foo.h 都必须包含导出该符号声明的 .h 文件。“包含你所使用的内容”工具是一个程序,它会分析源文件中的 #include 指令,查找违反此原则的情况并提出修复建议。该工具使用 Clang 库,其发布通常意味着与新版本的 Clang 兼容。
include-what-you-use 的主要目标是移除不必要的 #include 指令。为此,你需要识别给定文件(包括 .cc 和 .h 文件)中哪些 #include 指令是不必要的,并尽可能将其替换为前向声明。
主要变化
- 兼容 Clang 17。
- 改进了类型别名(typedef 和 using)的分析。
- 改进了命名空间别名的解析(命名空间 xyz = foobar)。
- 改进了对扩展前向声明(typedef struct Foo Bar;)的支持。
- 改进对自动类型转换和函数返回类型的处理,尤其是在处理复杂模板类型时。
- 添加了一个新的 IWYU:always_keep pragma,用于标记一个标头,以便无论它被包含在哪里,都应该始终保留它。
- 如果 libc++ 是当前使用的标准库,则自动使用 libc++ 内置函数的映射。
- 改进了 libc++ 和 posix 头文件的映射。
来源: linux.org.ru
