dsp-site/wiki/Prog/Lang/CPP/Проверка именования в Clang Tidy.md
2019-04-24 16:57:04 +03:00

1229 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Проверка именования в clang-tidy"
category: Программирование
tags: C++, программирование, clang, clang-tidy, форматирование,
summary:
CSS: table-100.css, clang-table.css
toc: yes
...
[TOC]
Программа [clang-tidy](https://clang.llvm.org/extra/clang-tidy/) может
проверить стилистику регистра идентификаторов, а также их префиксы и суффиксы.
Возможные варианты стилей:
```
lower_case
UPPER_CASE
camelBack
CamelCase
camel_Snake_Back
Camel_Snake_Case
aNy_CasE
```
Перечень вариантов идентификаторов приведён
[здесь](https://clang.llvm.org/extra/clang-tidy/checks/readability-identifier-naming.html).
Для включения проверки именования идентификаторов нужно в находящемся
в корне проекта файле `.clang-tidy` включить данный тип диагностики (опция
`clang-diagnostic-*,readability-identifier-naming`), а затем указать
список выполняемых проверок и их параметры в формате YAML, например:
```yaml
---
Checks: 'clang-diagnostic-*,readability-identifier-naming'
CheckOptions:
- key: readability-identifier-naming.VariableCase
value: lower_case
- key: readability-identifier-naming.VariablePrefix
value: ''
- key: readability-identifier-naming.VariableSuffix
value: ''
...
```
[Проект](https://git.246060.ru/f1x1t/clang-tidy-readability-identifier-naming)
с файлом `.clang-tidy`, в соответствии с которым проводятся проверки именования
идентификаторов.
Перечень возможных параметров конфигурационного файла, их типовые значения
и примеры соответствующего кода приведены ниже.
## Синтаксис
### AbstractClass (Абстрактный класс)
Параметр | Значение
-------------------------------|----------------
AbstractClassCase | `CamelCase`
AbstractClassPrefix | `''`
AbstractClassSuffix | `''`
Пример кода до форматирования:
```cpp
class ABSTRACT_CLASS {
public:
ABSTRACT_CLASS();
};
```
Пример кода после форматирования:
```cpp
class AbstractClass {
public:
AbstractClass();
};
```
### Class (Класс)
Параметр | Значение
-------------------------------|----------------
ClassCase | `CamelCase`
ClassPrefix | `''`
ClassSuffix | `''`
Пример кода до форматирования:
```cpp
class TEST_CLASS {
public:
TEST_CLASS();
~TEST_CLASS();
};
```
Пример кода после форматирования:
```cpp
class TestClass {
public:
TestClass();
~TestClass();
};
```
### Struct (Структура)
Параметр | Значение
-------------------------------|----------------
StructCase | `CamelCase`
StructPrefix | `''`
StructSuffix | `''`
Пример кода до форматирования:
```cpp
struct TEST_struct {
int a;
};
```
Пример кода после форматирования:
```cpp
struct TestStruct {
int a;
};
```
### Union (Объединение)
Параметр | Значение
-------------------------------|----------------
UnionCase | `CamelCase`
UnionPrefix | `''`
UnionSuffix | `''`
Пример кода до форматирования:
```cpp
union TEST_union {
int a;
char b;
};
```
Пример кода после форматирования:
```cpp
union TestUnion {
int a;
char b;
};
```
### Enum (Перечисление)
Параметр | Значение
-------------------------------|----------------
EnumCase | `CamelCase`
EnumPrefix | `''`
EnumSuffix | `''`
Пример кода до форматирования:
```cpp
enum TEST_enum { ONE, TWO };
```
Пример кода после форматирования:
```cpp
enum TestEnum { ONE, TWO };
```
### EnumConstant (Значение в перечислении)
Параметр | Значение
-------------------------------|----------------
EnumConstantCase | `UPPER_CASE`
EnumConstantPrefix | `''`
EnumConstantSuffix | `''`
Пример кода до форматирования:
```cpp
enum TestEnum { one, TWO };
```
Пример кода после форматирования:
```cpp
enum TestEnum { ONE, TWO };
```
### Namespace (Пространство имён)
Параметр | Значение
-------------------------------|----------------
NamespaceCase | `lower_case`
NamespacePrefix | `''`
NamespaceSuffix | `''`
Пример кода до форматирования:
```cpp
namespace TEST_ns {
}
```
Пример кода после форматирования:
```cpp
namespace test_ns {
}
```
### InlineNamespace (Вложенное пространство имён)
Параметр | Значение
-------------------------------|----------------
InlineNamespaceCase | `lower_case`
InlineNamespacePrefix | `''`
InlineNamespaceSuffix | `''`
Пример кода до форматирования:
```cpp
namespace test_ns {
inline namespace InlineNamespace {
}
} // namespace test_ns
```
Пример кода после форматирования:
```cpp
namespace test_ns {
inline namespace inline_namespace {
}
} // namespace test_ns
```
### TypeAlias (Псевдоним типа)
Параметр | Значение
-------------------------------|----------------
TypeAliasCase | `lower_case`
TypeAliasPrefix | `''`
TypeAliasSuffix | `''`
Пример кода до форматирования:
```cpp
struct MyStructure {
int a;
};
using MY_STRUCT_TYPE = MyStructure;
```
Пример кода после форматирования:
```cpp
struct MyStructure {
int a;
};
using MyStructType = MyStructure;
```
### Typedef (Объявление типа)
Параметр | Значение
-------------------------------|----------------
TypedefCase | `lower_case`
TypedefPrefix | `''`
TypedefSuffix | `''`
Пример кода до форматирования:
```cpp
typedef int MY_INT;
```
Пример кода после форматирования:
```cpp
typedef int my_int;
```
## Переменные
### Variable (Переменная) ???
### GlobalVariable (Глобальная переменная)
Параметр | Значение
-------------------------------|----------------
GlobalVariableCase | `lower_case`
GlobalVariablePrefix | `''`
GlobalVariableSuffix | `''`
Пример кода до форматирования:
```cpp
unsigned GlobalVariable;
```
Пример кода после форматирования:
```cpp
unsigned global_variable;
```
### LocalVariable (Локальная переменная)
Параметр | Значение
-------------------------------|----------------
LocalVariableCase | `camelBack`
LocalVariablePrefix | `''`
LocalVariableSuffix | `''`
Пример кода до форматирования:
```cpp
int function() {
int LocalVariable = 0;
return LocalVariable;
}
```
Пример кода после форматирования:
```cpp
int function() {
int localVariable = 0;
return localVariable;
}
```
### StaticVariable (Статическая переменная)
Параметр | Значение
-------------------------------|----------------
StaticVariableCase | `camelBack`
StaticVariablePrefix | `''`
StatucVariableSuffix | `''`
Пример кода до форматирования:
```cpp
int functionWithStaticVariable() {
static int StaticVariable = 0;
return StaticVariable;
}
```
Пример кода после форматирования:
```cpp
int functionWithStaticVariable() {
static int staticVariable = 0;
return staticVariable;
}
```
### ConstexptVariable (Переменная constexpr)
Параметр | Значение
-------------------------------|----------------
ConstexprVariableCase | `lower_case`
ConstexprVariablePrefix | `''`
ConstexprVariableSuffix | `''`
Пример кода до форматирования:
```cpp
constexpr int CONST_FIVE = 5;
```
Пример кода после форматирования:
```cpp
constexpr int const_five = 5;
```
### GlobalPointer (Глобальный указатель)
Параметр | Значение
-------------------------------|----------------
GlobalPointerCase | `lower_case`
GlobalPointerPrefix | `''`
GlobalPointerSuffix | `''`
Пример кода до форматирования:
```cpp
void* globalPointer;
```
Пример кода после форматирования:
```cpp
void* global_pointer;
```
### LocalPointer (Локальный указатель)
Параметр | Значение
-------------------------------|----------------
LocalPointerCase | `camelBack`
LocalPointerPrefix | `''`
LocalPointerSuffix | `''`
Пример кода до форматирования:
```cpp
void* function() {
void* LocalPointer = nullptr;
return LocalPointer;
}
```
Пример кода после форматирования:
```cpp
void* function() {
void* localPointer = nullptr;
return localPointer;
}
```
### Member (Член) ???
### ClassMember (Член класса)
Параметр | Значение
-------------------------------|----------------
ClassMemberCase | `camelBack`
ClassMemberPrefix | `''`
ClassMemberSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithClassMember {
public:
static int CLASS_MEMBER;
};
```
Пример кода после форматирования:
```cpp
class ClassWithClassMember {
public:
static int classMember;
};
```
### ConstantMember (Константный член)
Параметр | Значение
-------------------------------|----------------
ConstantMemberCase | `lower_case`
ConstantMemberPrefix | `''`
ConstantMemberSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithConstantMember {
char const ConstMember[4] = "123";
};
```
Пример кода после форматирования:
```cpp
class ClassWithConstantMember {
char const const_member[4] = "123";
};
```
### PrivateMember (Приватный член)
Параметр | Значение
-------------------------------|----------------
PrivateMemberCase | `camelBack`
PrivateMemberPrefix | `'m_'`
PrivateMemberSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithPrivateMember {
private:
int PrivateMember;
};
```
Пример кода после форматирования:
```cpp
class ClassWithPrivateMember {
private:
int m_privateMember;
};
```
### ProtectedMember (Защищённый член)
Параметр | Значение
-------------------------------|----------------
ProtectedMemberCase | `camelBack`
ProtectedMemberPrefix | `''`
ProtectedMemberSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithProtectedMember {
protected:
int ProtectedMember;
};
```
Пример кода после форматирования:
```cpp
class ClassWithProtectedMember {
protected:
int protectedMember;
};
```
### PublicMember (Публичный член)
Параметр | Значение
-------------------------------|----------------
PublicMemberCase | `camelBack`
PublicMemberPrefix | `''`
PublicMemberSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithPublicMember {
public:
int PublicMember;
};
```
Пример кода после форматирования:
```cpp
class ClassWithPublicMember {
public:
int publicMember;
};
```
## Константы
### Constant (Константа) ???
Параметр | Значение
-------------------------------|----------------
ConstantCase | `UPPER_CASE`
ConstantPrefix | `''`
ConstantSuffix | `''`
Пример кода до форматирования:
```cpp
const int theOne = 1;
```
Пример кода после форматирования:
```cpp
const int THE_ONE = 1;
```
### GlobalConstant (Глобальная константа)
Параметр | Значение
-------------------------------|----------------
GlobalConstantCase | `UPPER_CASE`
GlobalConstantPrefix | `''`
GlobalConstantSuffix | `''`
Пример кода до форматирования:
```cpp
const int theOne = 1;
```
Пример кода после форматирования:
```cpp
const int THE_ONE = 1;
```
### LocalConstant (Локальная константа)
Параметр | Значение
-------------------------------|----------------
LocalConstantCase | `camelBack`
LocalConstantPrefix | `''`
LocalConstantSuffix | `''`
Пример кода до форматирования:
```cpp
int functionWithLocalConstant() {
const int LocalConstant = 0;
return LocalConstant;
}
```
Пример кода после форматирования:
```cpp
int functionWithLocalConstant() {
const int localConstant = 0;
return localConstant;
}
```
### StaticConstant (Статическая контстанта)
Параметр | Значение
-------------------------------|----------------
StaticConstantCase | `camelBack`
StaticConstantPrefix | `''`
StaticConstantSuffix | `''`
Пример кода до форматирования:
```cpp
int functionWithStaticConstant() {
const int StaticConstant = 0;
return StaticConstant;
}
```
Пример кода после форматирования:
```cpp
int functionWithStaticConstant() {
const int staticConstant = 0;
return staticConstant;
}
```
### ClassConstant (Константа класса)
Параметр | Значение
-------------------------------|----------------
ClassConstantCase | `UPPER_CASE`
ClassConstantPrefix | `''`
ClassConstantSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithClassConstant {
public:
static int const Class_Constant = 0;
};
```
Пример кода после форматирования:
```cpp
class ClassWithClassConstant {
public:
static int const CLASS_CONSTANT = 0;
};
```
### GlobalConstantPointer (Глобальный константный указатель)
Параметр | Значение
-------------------------------|----------------
GlobalConstantPointerCase | `lower_case`
GlobalConstantPointerPrefix | `''`
GlobalConstantPointerSuffix | `''`
Пример кода до форматирования:
```cpp
void* global_pointer;
void* const GlobalConstPointer = global_pointer;
```
Пример кода после форматирования:
```cpp
void* global_pointer;
void* const global_const_pointer = global_pointer;
```
### LocalConstantPointer (Локальный константный указатель)
Параметр | Значение
-------------------------------|----------------
LocalConstantPointerCase | `camelBack`
LocalConstantPointerPrefix | `''`
LocalConstantPointerSuffix | `''`
Пример кода до форматирования:
```cpp
void* functionWithLocalConstPointer() {
void* pointer = nullptr;
void* const LocalConstPointer = pointer;
return LocalConstPointer;
}
```
Пример кода после форматирования:
```cpp
void* functionWithLocalConstPointer() {
void* pointer = nullptr;
void* const localConstPointer = pointer;
return localConstPointer;
}
```
## Функции
### Function (Функция)
Параметр | Значение
-------------------------------|----------------
FunctionCase | `camelBack`
FunctionPrefix | `''`
FunctionSuffix | `''`
Пример кода до форматирования:
```cpp
static int static_function() {
return 0;
}
```
Пример кода после форматирования:
```cpp
static int staticFunction() {
return 0;
}
```
### GlobalFunction (Глобальная функция)
Параметр | Значение
-------------------------------|----------------
GlobalFunctionCase | `camelBack`
GlobalFunctionPrefix | `''`
GlobalFunctionSuffix | `''`
Пример кода до форматирования:
```cpp
int global_function() {
return 0;
}
```
Пример кода после форматирования:
```cpp
int globalFunction() {
return 0;
}
```
### ConstexprFunction (Функция constexpr)
Параметр | Значение
-------------------------------|----------------
ConstexprFunctionCase | `camelBack`
ConstexprFunctionPrefix | `''`
ConstexprFunctionSuffix | `''`
Пример кода до форматирования:
```cpp
constexpr int get_five() {
return ( 5 );
}
```
Пример кода после форматирования:
```cpp
constexpr int getFive() {
return ( 5 );
}
```
### Method (Метод) ???
### ClassMethod (Метод класса)
Параметр | Значение
-------------------------------|----------------
ClassMethodCase | `camelBack`
ClassMethodPrefix | `''`
ClassMethodSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithMethod {
public:
static int get_int() { return 0; };
};
```
Пример кода после форматирования:
```cpp
class ClassWithMethod {
public:
static int getInt() { return 0; };
};
```
### ConstexprMethod (Метод constexpr)
Параметр | Значение
-------------------------------|----------------
ConstexprMethodCase | `camelBack`
ConstexprMethodPrefix | `''`
ConstexprMethodSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithConstexprMethod {
private:
constexpr int get_int() { return 0; };
};
```
Пример кода после форматирования:
```cpp
class ClassWithConstexprMethod {
private:
constexpr int getInt() { return 0; };
};
```
### VirtualMethod (Виртуальный метод)
Параметр | Значение
-------------------------------|----------------
VirtualMethodCase | `camelBack`
VirtualMethodPrefix | `''`
VirtualMethodSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithVirtualMethod {
private:
virtual int get_int() { return 0; };
};
```
Пример кода после форматирования:
```cpp
class ClassWithVirtualMethod {
private:
virtual int getInt() { return 0; };
};
```
### PrivateMethod (Приватный метод)
Параметр | Значение
-------------------------------|----------------
PrivateMethodCase | `camelBack`
PrivateMethodPrefix | `''`
PrivateMethodSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithPrivateMethod {
private:
int get_int() { return 0; };
};
```
Пример кода после форматирования:
```cpp
class ClassWithPrivateMethod {
private:
int getInt() { return 0; };
};
```
### ProtectedMethod (Защищённый метод)
Параметр | Значение
-------------------------------|----------------
ProtectedMethodCase | `camelBack`
ProtectedMethodPrefix | `''`
ProtectedMethodSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithProtectedMethod {
protected:
int get_int() { return 0; };
};
```
Пример кода после форматирования:
```cpp
class ClassWithProtectedMethod {
protected:
int getInt() { return 0; };
};
```
### PublicMethod (Публичный метод)
Параметр | Значение
----------------------------|----------------
PublicMethodCase | `camelBack`
PublicMethodPrefix | `''`
PublicMethodSuffix | `''`
Пример кода до форматирования:
```cpp
class ClassWithPublicMethod {
public:
int get_int() { return 0; };
};
```
Пример кода после форматирования:
```cpp
class ClassWithPublicMethod {
public:
int getInt() { return 0; };
};
```
## Параметры
### Parameter (Параметр)
Параметр | Значение
-------------------------------|----------------
ParameterCase | `camelBack`
ParameterPrefix | `''`
ParameterSuffix | `''`
Пример кода до форматирования:
```cpp
int returnInt(int return_Value) {
return return_Value;
};
```
Пример кода после форматирования:
```cpp
int returnInt(int returnValue) {
return returnValue;
};
```
### ConstantParameter (Константный параметр)
Параметр | Значение
-------------------------------|----------------
ConstantParameterCase | `camelBack`
ConstantParameterPrefix | `''`
ConstantParameterSuffix | `''`
Пример кода до форматирования:
```cpp
char returnChar(const char return_Value) {
return return_Value;
};
```
Пример кода после форматирования:
```cpp
char returnChar(const char returnValue) {
return returnValue;
};
```
### ConstantPointerParameter (Константный указатель на параметр)
Параметр | Значение
-------------------------------|----------------
ConstantPointerParameterCase | `camelBack`
ConstantPointerParameterPrefix | `''`
ConstantPointerParameterSuffix | `''`
Пример кода до форматирования:
```cpp
void* returnVoid(void* const return_Value) {
return return_Value;
};
```
Пример кода после форматирования:
```cpp
void* returnVoid(void* const returnValue) {
return returnValue;
};
```
### PointerParameter (Параметр типа указатель)
Параметр | Значение
-------------------------------|----------------
PointerParameterCase | `camelBack`
PointerParameterPrefix | `''`
PointerParameterSuffix | `''`
Пример кода до форматирования:
```cpp
void* returnPtr(void* return_Value) {
return return_Value;
};
```
Пример кода после форматирования:
```cpp
void* returnPtr(void* returnValue) {
return returnValue;
};
```
## Шаблоны
### TemplateParameter (Параметр шаблона)
Параметр | Значение
-------------------------------|----------------
TemplateParameterCase | `camelBack`
TemplateParameterPrefix | `''`
TemplateParameterSuffix | `''`
Пример кода до форматирования:
```cpp
template<typename TType> int tFunction(TType t_value) {
return 0;
}
```
Пример кода после форматирования:
```cpp
template<typename TType> int tFunction(TType tValue) {
return 0;
}
```
### ParameterPack (Список параметров шаблона)
Параметр | Значение
-------------------------------|----------------
ParameterPackCase | `camelBack`
ParameterPackPrefix | `''`
ParameterPackSuffix | `''`
Пример кода до форматирования:
```cpp
template<class ... Types> void f(Types ... Parameters_Pack);
```
Пример кода после форматирования:
```cpp
template<class ... Types> void f(Types ... parametersPack);
```
### TemplateTemplateParameter (Параметр шаблона шаблона)
Параметр | Значение
-------------------------------|----------------
TemplateTemplateParameterCase | `camelBack`
TemplateTemplateParameterPrefix| `''`
TemplateTemplateParameterSuffix| `''`
Пример кода до форматирования:
```cpp
template<template<class T> class TPL_TPL_Parameter>
class AllmightyClass { };
```
Пример кода после форматирования:
```cpp
template<template<class T> class tplTplParameter>
class AllmightyClass { };
```
### TypeTemplateParameter (Типа параметра шаблона)
Параметр | Значение
-------------------------------|----------------
TypeTemplateParameterCase | `CamelCase`
TypeTemplateParameterPrefix | `''`
TypeTemplateParameterSuffix | `''`
Пример кода до форматирования:
```cpp
template<typename t_type>int tFunction(t_type value) {
return 0;
};
```
Пример кода после форматирования:
```cpp
template<typename TType>int tFunction(TType value) {
return 0;
};
```
### ValueTemplateParameter (Значение параметра шаблона)
Параметр | Значение
-------------------------------|----------------
ValueTemplateParameterCase | `camelBack`
ValueTemplateParameterPrefix | `''`
ValueTemplateParameterSuffix | `''`
Пример кода до форматирования:
```cpp
template<typename TType, int arg_count> int tFunction(TType tValue) {
return 0;
}
```
Пример кода после форматирования:
```cpp
template<typename TType, int argCount> int tFunction(TType tValue) {
return 0;
}
```