我有一个使用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


现在,除了增加的花括号外,您的资源看起来应该与以前几乎相同
尽管来回样式转换可能会有更多更改。

10-01 06:39