This commit is contained in:
Andrei Astafev 2019-04-23 14:53:16 +03:00
parent 324f564aeb
commit 7c64668e7f
2 changed files with 235 additions and 79 deletions

View File

@ -1,16 +1,17 @@
--- ---
title: "Проверка именования в Clang Tidy" title: "Проверка именования в clang-tidy"
category: Программирование category: Программирование
tags: C++, программирование, clang, clang-tidy, форматирование, tags: C++, программирование, clang, clang-tidy, форматирование,
summary: summary:
CSS: table-100.css CSS: table-100.css, clang-table.css
toc: yes toc: yes
... ...
[TOC] [TOC]
Программа Clang Tidy может проверить стилистику регистра идентификаторов, Программа [clang-tidy](https://clang.llvm.org/extra/clang-tidy/) может
а также их префиксы и суффиксы. Возможные варианты стилей: проверить стилистику регистра идентификаторов, а также их префиксы и суффиксы.
Возможные варианты стилей:
``` ```
lower_case lower_case
@ -22,6 +23,9 @@ Camel_Snake_Case
aNy_CasE aNy_CasE
``` ```
Перечень вариантов идентификаторов приведён
[здесь](https://clang.llvm.org/extra/clang-tidy/checks/readability-identifier-naming.html).
Для включения проверки именования идентификаторов нужно в находящемся Для включения проверки именования идентификаторов нужно в находящемся
в корне проекта файле `.clang-tidy` включить данный тип диагностики (опция в корне проекта файле `.clang-tidy` включить данный тип диагностики (опция
`clang-diagnostic-*,readability-identifier-naming`), а затем указать `clang-diagnostic-*,readability-identifier-naming`), а затем указать
@ -54,21 +58,21 @@ AbstractClassCase | `CamelCase`
AbstractClassPrefix | `''` AbstractClassPrefix | `''`
AbstractClassSuffix | `''` AbstractClassSuffix | `''`
Пример кода до форматирования (было `ABSTRACT_CLASS`): Пример кода до форматирования:
```cpp ```cpp
class ABSTRACT_CLASS { class ABSTRACT_CLASS {
public: public:
ABSTRACT_CLASS(); ABSTRACT_CLASS();
}; };
``` ```
Пример кода после форматирования (стало `AbstractClass`): Пример кода после форматирования:
```cpp ```cpp
class AbstractClass { class AbstractClass {
public: public:
AbstractClass(); AbstractClass();
}; };
``` ```
@ -80,13 +84,14 @@ ClassCase | `CamelCase`
ClassPrefix | `''` ClassPrefix | `''`
ClassSuffix | `''` ClassSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
class TEST_CLASS { class TEST_CLASS {
public: public:
TEST_CLASS(); TEST_CLASS();
~TEST_CLASS(); ~TEST_CLASS();
}; };
``` ```
@ -94,9 +99,9 @@ public:
```cpp ```cpp
class TestClass { class TestClass {
public: public:
TestClass(); TestClass();
~TestClass(); ~TestClass();
}; };
``` ```
@ -112,7 +117,7 @@ StructSuffix | `''`
```cpp ```cpp
struct TEST_struct { struct TEST_struct {
int a; int a;
}; };
``` ```
@ -121,7 +126,7 @@ struct TEST_struct {
```cpp ```cpp
struct TestStruct { struct TestStruct {
int a; int a;
}; };
``` ```
@ -137,8 +142,8 @@ UnionSuffix | `''`
```cpp ```cpp
union TEST_union { union TEST_union {
int a; int a;
char b; char b;
}; };
``` ```
@ -146,8 +151,8 @@ union TEST_union {
```cpp ```cpp
union TestUnion { union TestUnion {
int a; int a;
char b; char b;
}; };
``` ```
@ -162,13 +167,13 @@ EnumSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
enum TEST_enum { One, Two }; enum TEST_enum { ONE, TWO };
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
enum TestEnum { One, Two }; enum TestEnum { ONE, TWO };
``` ```
@ -183,7 +188,7 @@ EnumConstantSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
enum TestEnum { one, two }; enum TestEnum { one, TWO };
``` ```
Пример кода после форматирования: Пример кода после форматирования:
@ -258,13 +263,19 @@ TypeAliasSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
struct MyStructure {
int a;
};
using MY_STRUCT_TYPE = MyStructure; using MY_STRUCT_TYPE = MyStructure;
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
using my_struct_type = MyStructure; struct MyStructure {
int a;
};
using MyStructType = MyStructure;
``` ```
### Typedef (Объявление типа) ### Typedef (Объявление типа)
@ -351,13 +362,19 @@ StatucVariableSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
static unsigned Static_Variable; int functionWithStaticVariable() {
static int StaticVariable = 0;
return StaticVariable;
}
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
static unsigned staticVariable; int functionWithStaticVariable() {
static int staticVariable = 0;
return staticVariable;
}
``` ```
@ -372,19 +389,13 @@ ConstexprVariableSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
constexpr int get_five() { constexpr int CONST_FIVE = 5;
return ( 2 + 3 );
};
constexpr int CONST_FIVE = get_five();
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
constexpr int get_five() { constexpr int const_five = 5;
return ( 2 + 3 );
};
constexpr int const_five = get_five();
``` ```
@ -419,20 +430,74 @@ LocalPointerSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
void* LocalPointer; void* function() {
void* LocalPointer = nullptr;
return LocalPointer;
}
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
void* localpointer; void* function() {
void* localPointer = nullptr;
return localPointer;
}
``` ```
### Member (Член) ??? ### Member (Член) ???
### ClassMember (Член класса) ??? ### 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 (Приватный член) ### PrivateMember (Приватный член)
@ -446,8 +511,8 @@ PrivateMemberSuffix | `''`
```cpp ```cpp
class ClassWithPrivateMember { class ClassWithPrivateMember {
private: private:
int PrivateMember; int PrivateMember;
}; };
``` ```
@ -455,8 +520,8 @@ private:
```cpp ```cpp
class ClassWithPrivateMember { class ClassWithPrivateMember {
private: private:
int m_privateMember; int m_privateMember;
}; };
``` ```
@ -473,8 +538,8 @@ ProtectedMemberSuffix | `''`
```cpp ```cpp
class ClassWithProtectedMember { class ClassWithProtectedMember {
protected: protected:
int ProtectedMember; int ProtectedMember;
}; };
``` ```
@ -482,8 +547,8 @@ protected:
```cpp ```cpp
class ClassWithProtectedMember { class ClassWithProtectedMember {
protected: protected:
int protectedMember; int protectedMember;
}; };
``` ```
@ -500,8 +565,8 @@ PublicMemberSuffix | `''`
```cpp ```cpp
class ClassWithPublicMember { class ClassWithPublicMember {
protected: public:
int PublicMember; int PublicMember;
}; };
``` ```
@ -509,15 +574,35 @@ protected:
```cpp ```cpp
class ClassWithPublicMember { class ClassWithPublicMember {
protected: public:
int publicMember; int publicMember;
}; };
``` ```
## Константы ## Константы
### Constant (Константа)
### Constant (Константа) ???
Параметр | Значение
-------------------------------|----------------
ConstantCase | `UPPER_CASE`
ConstantPrefix | `''`
ConstantSuffix | `''`
Пример кода до форматирования:
```cpp
const int theOne = 1;
```
Пример кода после форматирования:
```cpp
const int THE_ONE = 1;
```
### GlobalConstant (Глобальная константа) ### GlobalConstant (Глобальная константа)
@ -594,7 +679,7 @@ int functionWithStaticConstant() {
} }
``` ```
### ClassConstant (Константа класс) ### ClassConstant (Константа класса)
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
@ -605,18 +690,18 @@ ClassConstantSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
class ClassWithConstMember { class ClassWithClassConstant {
public: public:
static int const constant_member = 0; static int const Class_Constant = 0;
}; };
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
class ClassWithConstMember { class ClassWithClassConstant {
public: public:
static int const CONSTANT_MEMBER = 0; static int const CLASS_CONSTANT = 0;
}; };
``` ```
@ -624,7 +709,7 @@ class ClassWithConstMember {
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
GlobalConstantPointerCase | `UPPER_CASE` GlobalConstantPointerCase | `lower_case`
GlobalConstantPointerPrefix | `''` GlobalConstantPointerPrefix | `''`
GlobalConstantPointerSuffix | `''` GlobalConstantPointerSuffix | `''`
@ -639,7 +724,7 @@ void* const GlobalConstPointer = global_pointer;
```cpp ```cpp
void* global_pointer; void* global_pointer;
void* const GLOBAL_CONST_POINTER = global_pointer; void* const global_const_pointer = global_pointer;
``` ```
@ -647,7 +732,7 @@ void* const GLOBAL_CONST_POINTER = global_pointer;
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
LocalConstantPointerCase | `UPPER_CASE` LocalConstantPointerCase | `camelBack`
LocalConstantPointerPrefix | `''` LocalConstantPointerPrefix | `''`
LocalConstantPointerSuffix | `''` LocalConstantPointerSuffix | `''`
@ -666,16 +751,12 @@ void* functionWithLocalConstPointer() {
```cpp ```cpp
void* functionWithLocalConstPointer() { void* functionWithLocalConstPointer() {
void* pointer = nullptr; void* pointer = nullptr;
void* const LOCAL_CONST_POINTER = pointer; void* const localConstPointer = pointer;
return LOCAL_CONST_POINTER; return localConstPointer;
} }
``` ```
### ConstMember (Константный член)
## Функции ## Функции
@ -730,14 +811,14 @@ int globalFunction() {
``` ```
### ConstexptFunction (Функция constexpr) ### ConstexprFunction (Функция constexpr)
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
ConstexptFunctionCase | `camelBack` ConstexprFunctionCase | `camelBack`
ConstexptFunctionPrefix | `''` ConstexprFunctionPrefix | `''`
ConstexptFunctionSuffix | `''` ConstexprFunctionSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
@ -759,7 +840,7 @@ constexpr int getFive() {
### Method (Метод) ??? ### Method (Метод) ???
### ClassMethod (Метод класса) ??? ### ClassMethod (Метод класса)
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
@ -905,6 +986,7 @@ PublicMethodSuffix | `''`
class ClassWithPublicMethod { class ClassWithPublicMethod {
public: public:
int get_int() { return 0; }; int get_int() { return 0; };
};
``` ```
Пример кода после форматирования: Пример кода после форматирования:
@ -965,7 +1047,7 @@ char returnChar(const char return_Value) {
```cpp ```cpp
char returnChar(const char returnValue) { char returnChar(const char returnValue) {
return return_Value; return returnValue;
}; };
``` ```
@ -994,8 +1076,6 @@ void* returnVoid(void* const returnValue) {
}; };
``` ```
### ParameterPack (Список параметров)
### PointerParameter (Параметр типа указатель) ### PointerParameter (Параметр типа указатель)
Параметр | Значение Параметр | Значение
@ -1020,6 +1100,10 @@ void* returnPtr(void* returnValue) {
}; };
``` ```
## Шаблоны
### TemplateParameter (Параметр шаблона) ### TemplateParameter (Параметр шаблона)
Параметр | Значение Параметр | Значение
@ -1031,7 +1115,7 @@ TemplateParameterSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
template<typename TType>int tFunction(TType t_value) { template<typename TType> int tFunction(TType t_value) {
return 0; return 0;
} }
``` ```
@ -1039,14 +1123,54 @@ template<typename TType>int tFunction(TType t_value) {
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
template<typename TType>int tFunction(TType tValue) { template<typename TType> int tFunction(TType tValue) {
return 0; 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 (Параметр шаблона шаблона) ### 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 (Типа параметра шаблона) ### TypeTemplateParameter (Типа параметра шаблона)
@ -1074,7 +1198,27 @@ template<typename TType>int tFunction(TType value) {
``` ```
### ValueTemplateParameter (Значение параметра шаблона) ### 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;
}
```

12
wiki/css/clang-table.css Normal file
View File

@ -0,0 +1,12 @@
table {
margin-bottom: 16px;
}
th, td {
width: 50%;
padding: 5px;
text-align: left;
border: 1px solid #ddd;
}
tr:hover {background-color:#f5f5f5;}