如何修改Clang-tidy匈牙利命名法前缀,添加下划线分隔符?
解决Clang-tidy匈牙利命名前缀与变量名间下划线分隔问题
要让Clang-tidy生成u32_MyVar这种前缀和变量名间带下划线的匈牙利命名格式,核心是用readability-identifier-naming规则的类型特定命名配置,别用全局前缀设置(那会导致下划线跑到前缀前面)。具体操作如下:
- 编辑项目根目录的
.clang-tidy配置文件(没有就新建),启用readability-identifier-naming检查,并针对目标类型设置命名格式:
Checks: 'readability-identifier-naming' CheckOptions: # 针对uint32_t类型变量,指定前缀+下划线+驼峰变量名的格式 - key: readability-identifier-naming.Variable.TypeSpecific value: 'uint32_t:u32_{camel_case}' # 其他类型同理,比如int32_t - key: readability-identifier-naming.Variable.TypeSpecific value: 'int32_t:i32_{camel_case}' # 如果是类成员变量,配置MemberVariable字段 - key: readability-identifier-naming.MemberVariable.TypeSpecific value: 'uint32_t:u32_{camel_case}'
配置逻辑说明:
TypeSpecific是按变量类型单独设置命名规则的参数,格式为[类型]:[命名模板]{camel_case}表示变量名部分采用驼峰格式,和前面的u32_拼接后,就会生成u32_MyVar这种符合要求的命名- 务必删除全局的
Prefix配置项(比如readability-identifier-naming.Variable.Prefix),否则会出现_u32MyVar这种错误格式
验证效果:
原来不符合规范的代码:uint32_t u32MyVar;经过Clang-tidy格式化后会自动修正为:
uint32_t u32_MyVar;
如果需要适配更多类型,只需要在TypeSpecific里添加对应的类型和命名模板即可。
内容的提问来源于stack exchange,提问作者Slav
相关产品推荐
相关产品推荐

