Опция формата Clang для «расчленения» объявлений функцийC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Опция формата Clang для «расчленения» объявлений функций

Сообщение Anonymous »

Я ищу конфигурацию Clang, которая преобразует код A в код B (см. ниже).
Я предпочитаю «расчленять» функции с 3 или более аргументами для личного использования. читабельность, и я не нашел конфигурации Clang, которая сделала бы это именно так, как я хочу.
Подозреваю, что такой нет, но я хотел убедиться. Похоже, что в Clang нет опции, позволяющей поместить первую скобку вызова функции на новую строку, если количество аргументов > x или если длина строки превышает определенную длину символов.
Я, безусловно, был бы открыт для другого инструмента стиля с предлагаемыми флагами/опциями, позволяющими делать то, что я хочу.
Желаемый результат
Код A (входные данные) )
class X {
public:
int function(Arg arg1, Arg arg2);

private:
int _biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3);
};

int X::function(Arg1 arg1, Arg2 arg2) {
return arg1 + arg2;
}

int X::_biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3) {
if (arg3) {
return arg1 + arg2;
}
else {
return arg1 - arg2;
}
}

Код B (выход)
class X
{
public:
int function(Arg arg1, Arg arg2);

private:
int _biggerFunction
(
Arg arg1,
Arg arg2,
bool arg3
);
};

int X::function(Arg1 arg1, Arg2 arg2)
{
return arg1 + arg2;
}

int X::_biggerFunction
(
Arg1 arg1,
Arg2 arg2,
bool arg3
)
{
if (arg3)
{
return arg1 + arg2;
}
else
{
return arg1 - arg2;
}
}

Попытка решения
Я использовал детектор стилей Clang (в Clang Power Tools для Visual Studio), чтобы попытаться найти подходящую конфигурацию, но результат оказался не совсем таким, как я хотел. Детектор стиля Clang рекомендовал следующее:
# Format Style Options - Created with Clang Power Tools
---
BasedOnStyle: WebKit
BreakBeforeBraces: Allman
ColumnLimit: 50
ExperimentalAutoDetectBinPacking: true
...

Однако результат не соответствует стилю:
Тест детектора стиля Clang

Код A (ввод)

class X {
public:
int function(Arg arg1, Arg arg2);

private:
int _biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3);
};

int X::function(Arg1 arg1, Arg2 arg2) {
return arg1 + arg2;
}

int X::_biggerFunction(Arg1 arg1, Arg2 arg2, bool arg3) {
if (arg3) {
return arg1 + arg2;
}
else {
return arg1 - arg2;
}
}

Код B (выход)

class X
{
public:
int function(Arg arg1, Arg arg2);

private:
int _biggerFunction(
Arg1 arg1, Arg2 arg2, bool arg3);
};

int X::function(Arg1 arg1, Arg2 arg2)
{
return arg1 + arg2;
}

int X::_biggerFunction(
Arg1 arg1, Arg2 arg2, bool arg3)
{
if (arg3)
{
return arg1 + arg2;
}
else
{
return arg1 - arg2;
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... clarations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»