include-what-you-use(IWYU)支持

include-what-you-use (IWYU)基于 Clang 和 LLVM,分析 C/C++ 源文件的 #include 指令。它针对每个翻译单元报告包含但未使用的头文件,以及虽被使用、但其定义头文件仅被间接包含的符号。采纳这些建议可使头文件包含关系保持精简、明确。

安装 include-what-you-use

大多数 Linux 发行版提供 include-what-you-use,在 Ubuntu 上:

sudo apt-get install iwyu

确保 PATH 中可以找到 include-what-you-use 二进制文件。

运行 include-what-you-use

备注

IWYU 基于 Clang,因此使用 LLVM 工具链构建能得到最准确的结果。

调用 west build 时传入 -DZEPHYR_SCA_VARIANT=iwyu,即可运行 include-what-you-use,例如:

west build -b native_sim samples/hello_world -- -DZEPHYR_SCA_VARIANT=iwyu

分析随各源文件编译执行,建议的头文件包含修改会输出到构建输出的标准错误流。

配置 include-what-you-use

可以通过专用选项控制 include-what-you-use。完整列表见 IWYU documentation。

参数

描述

IWYU_OPTS

以分号分隔的 include-what-you-use 选项列表。每个选项都会自动加上所需的 -Xiwyu 前缀后传给工具。

这些参数可以通过命令行传递,也可以设置为环境变量。

west build -b native_sim samples/hello_world -- -DZEPHYR_SCA_VARIANT=iwyu -DIWYU_OPTS="--no_comments;--verbose=3"