我正在使用0.66.1版本的unrustify,并且对'mod_full_brace_if'的行为感到困惑,我已经设置为'强制'。它的评论说:
在单行'if'语句中添加或删除大括号。如果它们包含'else',则不会删除括号。
鉴于这一行:
if (flag) val = 10;
我希望/期望它转变为
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'('强制')。在我的测试文件中使用它会导致围绕if语句的主体的大括号。显然,多个设置有一些奇怪的交互。在我的未来,我看到了一些改变 - 设定和测试的苦差事。
答案 0 :(得分:2)
事实证明问题是将“mod_full_brace_if_chain”设置为“true”。
文档说:
使链中的所有if / elseif / else语句都被支撑。覆盖mod_full_brace_if。
如果必须支撑,它们都是支撑的。如果所有都可以无支撑,则删除括号。
设置值时,我没有仔细阅读最后一句话。