1

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

if(condition)
    func(a, b);

它变成了这个

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

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

if(condition)
    func(a, 
         b);

然后即使我试图强迫他使用 Astyle 也无法添加大括号--add-brackets。是否有可能以其他方式做到这一点?

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

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

1 回答 1

0

这可能看起来有点复杂,但是如果您有很多来源并且添加大括号是您只需要一次的操作,那么以下方案可能会起作用。

您可以坚持使用 astyle,但您需要暂时unrustify以及我编写的名为whatstyle的脚本。

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

教 astyle 你的资源的当前风格

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

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

于 2016-07-27T15:00:32.533 回答