vscode 添加代码命名规范检查

目录

  • 前言
  • clang-tidy
  • 命名规范要求
  • 配置规则熟悉
  • 配置文件导入

前言

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

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

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

clang-tidy

clang-tidy我是直接用clangd内部集成的,主要是错误可以方便的直接显示在vscode错误,且可以直接quick fix,不用自己劳心劳力手动替换,手动还容易替换错。
vscode 添加代码命名规范检查_第1张图片
vscode 添加代码命名规范检查_第2张图片

命名规范要求

先说说我这边的要求吧,,给我的感觉就是大杂烩,大概就是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: , value: ,写着头疼,直接 : ,如下
Diagnostics:
  ClangTidy:
    Add:
      [
        readability-identifier*,
      ]
    CheckOptions:
      readability-identifier-naming.VariableCase: camelBack

vscode 添加代码命名规范检查_第3张图片

自用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

你可能感兴趣的:(C\C++,vscode,vscode)