Astyle - как отформатировать условие без фигурных скобок в 1TBS
У меня есть программа, которая использует Astyle для форматирования кода в 1TBS. Итак, если у меня есть такой код
if(condition)
func(a, b);
это меняется на это
if(condition) {
func(a, b);
}
Проблема в том, что когда параметры в вызываемой функции разбиты на несколько строк, вот так:
if(condition)
func(a,
b);
Тогда Астиль не сможет добавить фигурные скобки, даже если я попытаюсь заставить его --add-brackets
, Можно ли сделать это как-то иначе?
Моя команда теперь выглядит так:
astyle --style=1tbs --add-brackets test.c
1 ответ
Это может показаться немного запутанным, но если у вас много источников, и добавление фигурных скобок - это операция, которая вам понадобится только один раз, может сработать следующая схема.
Вы можете придерживаться astyle, но вам нужно временно отменить сертификацию, а также сценарий, который я написал под названием whatstyle.
В следующих шагах замените test1.c
с вашими источниками и сохраните резервную копию ваших источников, как они будут изменены.
Научите стилю текущий стиль ваших источников
whatstyle.py -f astyle --mode resilient --output astylerc test1.c
Научите не доверять текущему стилю ваших источников
whatstyle.py -f uncrustify --output uncrustify.cfg test1.c
Скажите uncrustify, чтобы всегда добавлять фигурные скобки в ifs
( egrep -v mod_full_brace_if < uncrustify.cfg ; echo "mod_full_brace_if = force" ) \
> uncrustify_addbrace.cfg
Переформатируйте ваши источники с минимальными изменениями стиля с помощью uncrustify
uncrustify --replace -c uncrustify_addbrace.cfg test1.c
Добавлены брекеты, теперь они трансформируются в оригинальный стиль с помощью astyle.
ARTISTIC_STYLE_OPTIONS=astylerc astyle test1.c
Теперь ваши источники должны выглядеть почти так же, как и раньше, за исключением добавленных фигурных скобок, хотя может быть больше изменений при преобразовании стиля назад и вперед.