Astyle-如何将不带大括号的条件格式化为1TBS



我有一个程序,它使用Astyle将代码格式化为1TBS。所以,如果我有一个像这样的代码

if(condition)
    func(a, b);

它变为这个

if(condition) {
    func(a, b);
}

问题是,当被调用函数中的参数被分解为多行时,如下所示:

if(condition)
    func(a, 
         b);

即使我试图用--add-brackets强迫Astyle,他也无法添加大括号。有可能用其他方法吗?

我的命令现在看起来是这样的:

astyle --style=1tbs --add-brackets  test.c

这可能看起来有点复杂,但如果您有很多来源添加大括号只需要一次操作,以下方案可能有效。

你可以坚持astyle,但你需要暂时取消它还有我写的一个叫whatstyle的剧本。

在以下步骤中,用源替换test1.c并保留备份因为它们将被修改。

教astyle你的来源的当前风格

whatstyle.py -f astyle --mode resilient --output astylerc test1.c

教你不要相信你的来源的当前风格

whatstyle.py -f uncrustify --output uncrustify.cfg test1.c

告诉unjustify始终在if中添加大括号

( egrep -v mod_full_brace_if < uncrustify.cfg ; echo "mod_full_brace_if = force" ) 
  > uncrustify_addbrace.cfg

在不合理的情况下,尽可能少地改变风格,重新格式化你的来源

uncrustify --replace -c uncrustify_addbrace.cfg test1.c

已经添加的大括号现在使用astyle重新转换为原始样式

ARTISTIC_STYLE_OPTIONS=astylerc astyle test1.c

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

最新更新