vscode 添加代码命名规范检查

前言

前文简单提到clang-tidy提供命名规范检查,由于篇幅,没有详细讲解。

正好最近又分了个打杂的活——旧项目代码规范整改。

就顺便写个博客,补充描述下在vscode中如何使用clang-tidy进行静态检查。

clang-tidy

clang-tidy我是直接用clangd内部集成的,主要是错误可以方便的直接显示在vscode错误,且可以直接quick fix,不用自己劳心劳力手动替换,手动还容易替换错。
在这里插入图片描述
在这里插入图片描述

命名规范要求

先说说我这边的要求吧,,给我的感觉就是大杂烩,大概就是google命名规范+华为命名规范的样子。
不过命名规范这种东西见仁见智,反正我不是某一派的死忠,除了匈牙利命名法都可以接受,既然公司已经定好规范,遵守就好。
公司文档看下来,大概要求如下:

  • 结构体及自由函数:小写+下划线,lower_case
  • 成员变量:m前缀+大驼峰,m+CamelCase
  • 类名:大坨峰,CamelCase
  • 宏定义及枚举:UPPER_CASE
  • 类方法:小驼峰,camelBack
  • 全局变量:g前缀+大驼峰,g+CamelCase
  • 常量:k前缀+大驼峰,k+CamelCase
  • 局部变量:小驼峰,camelBack

配置规则熟悉

clang-tidy 关于命名规范的check 都在readability-identifier-naming这个check集里面。
要求有了,参考check也有了,那就一个一个对应填空呗

clang可识别支持的有以下几种命名法,常见的都支持

  • lower_case,
  • UPPER_CASE,
  • camelBack,
  • CamelCase,
  • camel_Snake_Back,
  • Camel_Snake_Case,
  • aNy_CasE.

另外可以支持前缀后缀,细分的模块也特别多,私有、公有、保护成员,全局,静态,等等等等,只要不是特别离谱的需求,基本都能自定义配出来,我上面的要求也就是洒洒水。

至于我得需求和checks的对应整理如下

  • 结构体:StructCase
  • 自由函数: FunctionCase
  • 类方法:MethodCase,特别注意不是ClassMethodCase,这个值得是类静态成员函数,官方文档示例是错误的!
  • 成员变量: MemberCase ,注意区别ClassMemberCase,同上
  • 类名:ClassCase
  • 宏定义:MacroDefinitionCase
  • 枚举:EnumCase 、EnumConstantCase
  • 全局变量:GlobalVariableCase
  • 常量:ConstantCase
  • 局部变量:VariableCase

前缀后缀就是把case换成Prefix、Suffix,不赘述

配置文件导入

至于如何配置clang-tidy的check,有两种方法

  1. clang-tidy文件:clangd里面的clang-tidy,你可以跟clang-format一样在根目录下添加.clang-tidy 文件,静态检查会自行加载该文件的规则,但是写了一下,感觉语法比较不爽,如下:
Checks:          'readability-identifier*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle:     none
User:            van helsing
CheckOptions:
  - key:             readability-identifier-naming.VariableCase
    value:           camelBack
  - key:             readability-identifier-naming.MacroDefinitionCase
    value:           UPPER_CASE
  1. 另一种clangd的配置文件.clangd了,同样扔根目录,写法要简单一点点,不用特别 key: <key>, value: <value>,写着头疼,直接 <key>: <value>,如下
Diagnostics:
  ClangTidy:
    Add:
      [
        readability-identifier*,
      ]
    CheckOptions:
      readability-identifier-naming.VariableCase: camelBack

在这里插入图片描述

自用clangd命名检查配置文件

Diagnostics:
  ClangTidy:
    Add:
      [
        readability-identifier*,
      ]
    CheckOptions:
      readability-identifier-naming.VariableCase: camelBack

      readability-identifier-naming.GlobalVariableCase: CamelCase
      readability-identifier-naming.GlobalVariablePrefix: g

      readability-identifier-naming.MemberPrefix: m
      readability-identifier-naming.MemberCase: CamelCase
      readability-identifier-naming.ClassMemberPrefix: m
      readability-identifier-naming.ClassMemberCase: CamelCase

      readability-identifier-naming.EnumCase: UPPER_CASE
      readability-identifier-naming.EnumConstantCase: UPPER_CASE
      readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
      
      readability-identifier-naming.ClassCase: CamelCase
      readability-identifier-naming.StructCase: lower_case

      readability-identifier-naming.FunctionCase: lower_case
      readability-identifier-naming.ClassMethodCase: camelBack
      readability-identifier-naming.MethodCase: camelBack
      
      readability-identifier-naming.ConstantCase: CamelCase
      readability-identifier-naming.ConstantPrefix: k
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值