dsp-site/wiki/Prog/Lang/CPP/Проверка именования в Clang Tidy.adoc

1365 lines
26 KiB
Plaintext
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.

= Проверка именования в 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<typename TType> int tFunction(TType t_value) {
return 0;
}
----
Пример кода после форматирования:
[source,cpp]
----
template<typename TType> int tFunction(TType tValue) {
return 0;
}
----
=== ParameterPack (Список параметров шаблона)
[cols=",",options="header",]
|===
|Параметр |Значение
|ParameterPackCase |`camelBack`
|ParameterPackPrefix |`''`
|ParameterPackSuffix |`''`
|===
Пример кода до форматирования:
[source,cpp]
----
template<class ... Types> void f(Types ... Parameters_Pack);
----
Пример кода после форматирования:
[source,cpp]
----
template<class ... Types> void f(Types ... parametersPack);
----
=== TemplateTemplateParameter (Параметр шаблона шаблона)
[cols=",",options="header",]
|===
|Параметр |Значение
|TemplateTemplateParameterCase |`camelBack`
|TemplateTemplateParameterPrefix |`''`
|TemplateTemplateParameterSuffix |`''`
|===
Пример кода до форматирования:
[source,cpp]
----
template<template<class T> class TPL_TPL_Parameter>
class AllmightyClass { };
----
Пример кода после форматирования:
[source,cpp]
----
template<template<class T> class tplTplParameter>
class AllmightyClass { };
----
=== TypeTemplateParameter (Типа параметра шаблона)
[cols=",",options="header",]
|===
|Параметр |Значение
|TypeTemplateParameterCase |`CamelCase`
|TypeTemplateParameterPrefix |`''`
|TypeTemplateParameterSuffix |`''`
|===
Пример кода до форматирования:
[source,cpp]
----
template<typename t_type>int tFunction(t_type value) {
return 0;
};
----
Пример кода после форматирования:
[source,cpp]
----
template<typename TType>int tFunction(TType value) {
return 0;
};
----
=== ValueTemplateParameter (Значение параметра шаблона)
[cols=",",options="header",]
|===
|Параметр |Значение
|ValueTemplateParameterCase |`camelBack`
|ValueTemplateParameterPrefix |`''`
|ValueTemplateParameterSuffix |`''`
|===
Пример кода до форматирования:
[source,cpp]
----
template<typename TType, int arg_count> int tFunction(TType tValue) {
return 0;
}
----
Пример кода после форматирования:
[source,cpp]
----
template<typename TType, int argCount> int tFunction(TType tValue) {
return 0;
}
----