配置 uncrustify 以添加大括号

Configuring uncrustify to add braces

我正在使用 uncrustify 的 0.66.1 版本,我对 'mod_full_brace_if' 的行为感到困惑,我已将其设置为 'force'。它的评论说:

Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.

给定行:

if (flag) val = 10;

我hoped/expected它被改造为

if (flag) { val = 10; }

而是保持不变。

这只是我对'mod_full_brace_if'行为的误解吗?

稍后: 我有时间在家里做一些小实验。我从创建一个新的格式文件开始,修改了一些与强制大括号与各种关键字在同一行有关的设置,以及一些强制大括号包围单行正文的设置。我制作了一个包含以下内容的测试文件:

void foo() {
bool flag;
int var;
if (flag) var = 10;
if (!flag)
    var = 20; 
}

运行 uncrustify 使用我的新配置文件产生了我在工作中看到的同样缺乏转换。

然后我创建了另一个配置文件,只更改了 'mod_full_brace_if'(改为 'force')。在我的测试文件中使用它会导致 if 语句主体周围出现大括号。显然,多个设置之间存在一些奇怪的交互。我在未来看到了一些更改设置和测试的苦差事。

原来问题出在将 "mod_full_brace_if_chain" 设置为 "true"。

文档说:

Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.

If any must be braced, they are all braced. If all can be unbraced, then the braces are removed.

我在设置值时没有仔细阅读最后一句话。