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

如何为clang-tidy的readability-input-naming规则配置可选函数前缀?

解决clang-tidy readability-input-naming规则的可选前缀需求

问题场景

我在项目中使用clang-tidy的readability-input-naming规则强制函数命名遵循CamelCase风格,但需要允许部分函数带有Win32_或Linux_前缀,且前缀后的命名仍要遵守CamelCase规则。示例如下:

// 合规的现有风格
void DoSomething(void);

// 需要允许的新风格
void Win32_DoSomething(void);
void Linux_DoSomething(void);

之前尝试过两种方法都不可行:

  • 用忽略正则表达式跳过前缀开头的函数:会导致规则完全失效,无法约束前缀后的命名
  • 用NOLINTNEXTLINE(readability-input-naming)禁用行检查:同样会让规则对这些函数完全不生效

想问是否可以设置这类可选前缀,同时保留规则对函数名的约束?

解决方案

可以通过自定义readability-input-naming的函数命名正则表达式来实现。在项目的.clang-tidy配置文件中,针对该规则添加以下配置:

ReadabilityInputNaming:
  Function: '^(Win32_|Linux_)?[A-Z][a-zA-Z0-9]*'

正则说明

  • ^(Win32_|Linux_)?:允许函数名开头为Win32_、Linux_,或者没有前缀(?标识该部分可选)
  • [A-Z][a-zA-Z0-9]*:要求前缀后的部分(或无前缀时的整个函数名)必须以大写字母开头,后续可跟大小写字母或数字,严格遵循CamelCase风格

生效效果

  • 不带前缀的函数:必须符合纯CamelCase(如DoSomething合规,doSomething、do_something不合规)
  • 带前缀的函数:前缀必须是指定的Win32_或Linux_,且前缀后的部分必须是CamelCase(如Win32_DoSomething合规,Win32_doSomething、Linux_do_something不合规)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:07:03