ReSharper - 围绕单线施加花括号

Boo*_*rry 92 c# resharper

当花括号不用于包围单行代码块时,是否可以配置ReSharper来修复C#代码,如下所示:

if (blnSomeCondition)
   DoSomething();  // complain

if (blnSomeOtherCondition)
{
   DoSomethingElse(); // don't complain
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ser*_* G. 136

在新版本的ReSharper(2016.x)中已经转移到Code Style. ReSharper 2016.1.1

**UPD1:适用于ReSharper 2017.x** ReSharper 2017.1.2

**UPD2:适用于ReSharper 2018.x** ReSharper 2018.1


Jur*_*sky 35

Ryan是正确的(但请注意,他的链接指的是R#2.0帮助).具体程序如下:

  1. 转至ReSharper>选项>语言> C#>格式样式>大括号布局
  2. 将"大括号"if - else"statement"设置为"使用多线括号"
  3. 保存更改后,选择要重新格式化的范围(可以是代码选择,文件,文件夹,项目,解决方案 - 您想要的任何内容).
  4. 选择ReSharper>工具>清理代码.
  5. 利润.

请记住,代码清理会做很多事情,它们不仅与代码格式有关(请参阅http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html上的详细信息),因此请明智地使用该功能.


Boo*_*rry 28

Gorohoroh的解决方案很接近,但我不必选择"使用大括号来支持多线",而是选择"添加大括号"来强制它在单行场景中添加大括号.而且我必须在"Force Braces"下的所有六个下拉菜单中设置它以捕获所有场景:

替代文字

我真正希望的是能够设置ReSharper在规则被违反时执行黄色警告或红色错误,但我还没有找到办法做到这一点.因为你是对的,Gorohoroh,清理代码做了很多事情,我希望有一个选项可以一次查看和修复规则违规.

谢谢你的帮助!

  • 此选项是正确的但已被移动 (3认同)

Jor*_*dan 8

对于ReSharper 2016.2.2.

您应该编辑您的个人资料以进行清理.适当的项目称为"if-else","for","foreach","while","do-while","using"中的单个语句的添加/删除大括号.此项目可在C#=>代码样式项目中找到.

如果选中该项,则会添加大括号; 如果未选中,将删除大括号.

注意:添加现在不起作用(不知道为什么 - 也许是ReSharper的新版本).但是,如果您取消选中上述项目,则不会删除单个语句周围的现有大括号.

UPD:问题解决了,请看这篇文章的前两条评论.

  • 这在2016.3.2中有所不同 - 在Options下,转到_Code Editing - > C# - > Code styles - > Braces - >在"If"statement_中,然后在Preference下选择"Enforce always".其他选项包括"不强制执行","如果正文为多行则强制执行","强制if语句为多行"等. (2认同)