如何让ReSharper为单行守卫子句强制添加单行大括号
配置ReSharper实现带单行大括号的守卫子句反转
我喜欢ReSharper的「反转if语句减少嵌套」功能,它贴合守卫子句技巧,但默认反转后的单行if没有大括号,按现有方法配置只能得到多行大括号的结果,我需要的是带单行大括号的反转效果。
示例对比
原始代码
if (!isPassed) { string ruleId = testResultNode.Attributes["idref"].Value; string ruleTitle = GetRuleTitle(oval, ruleId); }
ReSharper默认反转结果
if (isPassed) continue; string ruleId = testResultNode.Attributes["idref"].Value; string ruleTitle = GetRuleTitle(oval, ruleId);
期望的目标结果
if (isPassed) { continue; } string ruleId = testResultNode.Attributes["idref"].Value; string ruleTitle = GetRuleTitle(oval, ruleId);
当前错误结果(按现有方法配置后)
if (isPassed) { continue; } string ruleId = testResultNode.Attributes["idref"].Value; string ruleTitle = GetRuleTitle(oval, ruleId);
正确配置步骤
- 打开ReSharper设置(快捷键:
Alt+Enter→ 选择「ReSharper选项」,或菜单路径:ReSharper → Options) - 导航到 代码编辑 → C# → 代码样式 → 大括号
- 找到「对于简单语句(if/while/for等)」,设置为「总是使用大括号」
- 继续导航到 代码编辑 → C# → 换行与包装 → 大括号
- 找到「简单块(if/for/foreach等的单语句块)」,勾选「将块放在与构造相同的行」
- 确保「反转if语句以减少嵌套」的检查规则处于启用状态(路径:代码检查 → 检查严重性,找到对应规则并设置为建议或警告)
完成以上配置后,ReSharper反转if语句时就会生成带单行大括号的守卫子句。
内容的提问来源于stack exchange,提问作者Man-D
相关产品推荐
相关产品推荐

