我有一个使用Astyle将代码格式化为1TBS的程序。所以,如果我有这样的代码
if(condition)
func(a, b);
它改变为此
if(condition) {
func(a, b);
}
问题是,当被调用函数中的参数分成多行时,如下所示:
if(condition)
func(a,
b);
这样,即使我尝试使用
--add-brackets
强制Astyle,Astyle也无法添加括号。是否可以通过其他方式进行?我的命令现在看起来像这样:
astyle --style=1tbs --add-brackets test.c
最佳答案
这似乎有些令人费解,但是如果您有很多资料来源
而添加括号则只需一次操作,
以下方案可能有效。
您可以坚持使用astyle,但是暂时需要uncrustify
以及我编写的名为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
使用rustrustify,以尽可能少的样式更改来重新格式化源
uncrustify --replace -c uncrustify_addbrace.cfg test1.c
现在已经添加了大括号,现在使用astyle重新转换为原始样式。
ARTISTIC_STYLE_OPTIONS=astylerc astyle test1.c
现在,除了增加的花括号外,您的资源看起来应该与以前几乎相同
尽管来回样式转换可能会有更多更改。