clang-tidy 17:如何仅对类所有成员强制m_前缀,排除结构体?
clang-tidy 17 配置类成员强制
m_前缀(排除结构体) 你需要实现的是:让类的所有访问级别成员(public/private/protected)都强制使用m_前缀,同时结构体成员不受约束。单独配置readability-identifier-naming.ClassMemberPrefix: 'm_'仅对类的私有/保护成员生效,因为公共类成员默认遵循ClassPublicMemberPrefix规则,而非ClassMemberPrefix。
正确配置方案
使用以下 YAML 配置,明确指定类的所有访问级别成员前缀,同时禁用结构体的成员前缀检查:
Checks: 'readability-identifier-naming' readability-identifier-naming: # 类的所有成员前缀设为 m_ ClassMemberPrefix: 'm_' ClassPublicMemberPrefix: 'm_' ClassProtectedMemberPrefix: 'm_' # 结构体所有成员前缀设为空,禁用检查 StructMemberPrefix: '' StructPublicMemberPrefix: '' StructProtectedMemberPrefix: '' StructPrivateMemberPrefix: ''
之前尝试的问题说明
- 示例1:仅配置
ClassMemberPrefix且MemberPrefix为空,公共类成员因未匹配到ClassPublicMemberPrefix规则,所以无警告 - 示例2:
MemberPrefix是通用规则,会作用于所有类和结构体的成员,不符合需求 - 示例3:配置
MemberPrefix且清空PrivateMemberPrefix,会导致类和结构体的私有成员都不触发警告,同时结构体公共成员仍会被检查,不符合要求
内容的提问来源于stack exchange,提问作者Jorge
相关产品推荐
相关产品推荐

