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