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