--- 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: '' ... ``` Перечень возможных параметров конфигурационного файла, их типовые значения и примеры соответствующего кода приведены ниже. ## Синтаксис ### 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 int tFunction(TType t_value) { return 0; } ``` Пример кода после форматирования: ```cpp template int tFunction(TType tValue) { return 0; } ``` ### ParameterPack (Список параметров шаблона) Параметр | Значение -------------------------------|---------------- ParameterPackCase | `camelBack` ParameterPackPrefix | `''` ParameterPackSuffix | `''` Пример кода до форматирования: ```cpp template void f(Types ... Parameters_Pack); ``` Пример кода после форматирования: ```cpp template void f(Types ... parametersPack); ``` ### TemplateTemplateParameter (Параметр шаблона шаблона) Параметр | Значение -------------------------------|---------------- TemplateTemplateParameterCase | `camelBack` TemplateTemplateParameterPrefix| `''` TemplateTemplateParameterSuffix| `''` Пример кода до форматирования: ```cpp template class TPL_TPL_Parameter> class AllmightyClass { }; ``` Пример кода после форматирования: ```cpp template class tplTplParameter> class AllmightyClass { }; ``` ### TypeTemplateParameter (Типа параметра шаблона) Параметр | Значение -------------------------------|---------------- TypeTemplateParameterCase | `CamelCase` TypeTemplateParameterPrefix | `''` TypeTemplateParameterSuffix | `''` Пример кода до форматирования: ```cpp templateint tFunction(t_type value) { return 0; }; ``` Пример кода после форматирования: ```cpp templateint tFunction(TType value) { return 0; }; ``` ### ValueTemplateParameter (Значение параметра шаблона) Параметр | Значение -------------------------------|---------------- ValueTemplateParameterCase | `camelBack` ValueTemplateParameterPrefix | `''` ValueTemplateParameterSuffix | `''` Пример кода до форматирования: ```cpp template int tFunction(TType tValue) { return 0; } ``` Пример кода после форматирования: ```cpp template int tFunction(TType tValue) { return 0; } ```