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

1365 lines
26 KiB
Plaintext
Raw Normal View History

2019-06-01 21:08:41 +00:00
= Проверка именования в 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;
}
----