ReSharper-在单行上强制花括号


100

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

if (blnSomeCondition)
   DoSomething();  // complain

if (blnSomeOtherCondition)
{
   DoSomethingElse(); // don't complain
}

谢谢


3
很好的问题,但是第一种语法出了什么问题?不需要大括号。
米卡

43
一些开发人员认为,将花括号括在单行代码块中是一种更好的做法,因为它可以提高可读性和可维护性。
瑞安·贝格

33
另外,我已经看到多少次不使用大括号导致了bug。有人进行了更改,看到了if并添加了新行,但没有意识到它不会作为条件语句的一部分执行。这很微妙,但是已经发生了。
哈迪·哈里里

2
我对第一种格式确实没有问题,但是我可以看到它可能会导致Hadi提到的情况中的错误。我们的团队已经决定,这是我们希望执行的编码标准,这就是为什么我问这个问题。
Booberry

5
我个人的喜好是不要在单行“ if”中使用大括号,而应将“ if”和以下语句放在同一物理行上,例如“ if(blnSomeCondition)Do Something();”。
Paul Ruane 2010年

Answers:


148

在新版本的ReSharper(2016.x)中已移至代码样式。 ReSharper 2016.1.1

UPD1:适用于ReSharper 2017.x ReSharper 2017.1.2

UPD2:适用于ReSharper 2018.x ReSharper 2018.1

UPD3:适用于ReSharper 2019.x ReSharper 2019.1

UPD4:适用于ReSharper 2020.x 在此处输入图片说明


35

Ryan是正确的(但是请注意,他的链接引用了R#2.0帮助)。具体过程如下:

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

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


28

Gorohoroh的解决方案很接近,但是与其选择“对多行使用大括号”,我不得不选择“添加大括号”以强制其在单行方案中添加大括号。我必须在“ Force Braces”下的所有六个下拉菜单中进行设置,以适应所有情况:

替代文字

我真正希望的是能够将ReSharper设置为在违反规则时发出黄色警告或红色错误,但是我还没有找到一种方法来做到这一点。因为您是对的,所以Gorohoroh的Cleanup Code可以完成很多工作,我希望可以一​​次查看并修复违反规则的选项。

谢谢你的帮助!


8

对于ReSharper 2016.2.2

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

如果选中该项目,将添加大括号;如果未选中,括号将被删除。

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

UPD:问题已解决,请参阅此帖子下的前两个评论。


2
这在2016.3.2中的工作原理略有不同-在“选项”下,转到“代码编辑”->“ C#”->“代码样式”->大括号->在“ If”语句中,然后在“首选项”下选择“始终执行”。其他选项是“不强制”,“强制如果身体是多行”,“强制if语句是多行”,等等
蔡特

真好 谢谢!在完成这些设置后,我描述的清理工作正常进行。
乔丹


1

即使可以帮助其他人节省时间,在我公司的一台机器上,遵循Sergey的建议还是不够的,尽管他的职位质量很高。

在有关的设置(VS2017,R#2019,均为最新)上,R#端的这些设置已经不错,但我还必须在Visual Studio选项中对其进行修改:

  • 在选项窗口中,转到文本编辑器-> C#->代码样式->格式设置->常规
  • 选中“ 在格式化期间执行其他代码清除 ”和“ 为单行控制语句添加/删除括号

0

好吧,它又被移动了。新版本位于版本上的“语法样式”下ReSharper 2020.01

ReSharper > Options > Code Editing > C# > Syntax Style > Braces

这是屏幕截图 ReSharper 2020.01

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.