You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Clang-Tidy,豁免NULL以外的特定死存储值?

解决Clang-Tidy对INVALID_HANDLE_VALUE防御性赋值的死存储误报问题

Clang-Tidy的deadcode.DeadStores检查默认会忽略赋值为NULL的防御性操作,但不会自动识别INVALID_HANDLE_VALUE这类Windows API特有的无效值标记。要让它豁免这类赋值,你可以通过以下两种方式配置:

方式一:使用.clang-tidy配置文件

在项目根目录创建或修改.clang-tidy文件,给deadcode.DeadStores检查添加IgnoreAssignmentsTo参数,指定要忽略的目标值:

Checks: 'deadcode.DeadStores'
CheckOptions:
  - key: deadcode.DeadStores.IgnoreAssignmentsTo
    value: 'INVALID_HANDLE_VALUE'

如果需要同时豁免多个类似的API无效标记(比如INVALID_SOCKET),可以用逗号分隔:

CheckOptions:
  - key: deadcode.DeadStores.IgnoreAssignmentsTo
    value: 'INVALID_HANDLE_VALUE, INVALID_SOCKET'

方式二:编译时通过命令行参数传递

如果不想修改配置文件,也可以在编译时直接通过-Xclang-tidy参数指定配置:

clang-tidy your_source.cpp -Xclang-tidy="-checks=deadcode.DeadStores,-deadcode.DeadStores.IgnoreAssignmentsTo=INVALID_HANDLE_VALUE"

若使用CMake构建系统,可将该参数添加到目标编译选项中:

target_compile_options(your_target PRIVATE
  -Xclang-tidy="-checks=deadcode.DeadStores,-deadcode.DeadStores.IgnoreAssignmentsTo=INVALID_HANDLE_VALUE"
)

注意事项

  • 直接填写宏名称即可,Clang-Tidy会匹配代码中对该宏的赋值操作,无需展开宏的实际值(比如(HANDLE)-1)。
  • 若你自定义了类似的无效状态标记宏,也可以用同样的方式将其加入豁免列表。

内容的提问来源于stack exchange,提问作者Govind Parmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:43:17