C# ReSharper-在单行周围强制使用大括号

C# ReSharper-在单行周围强制使用大括号,c#,resharper,C#,Resharper,当不使用大括号包围单行代码块时,我是否可以将ReSharper配置为修复C#代码,如下所示: if (blnSomeCondition) DoSomething(); // complain if (blnSomeOtherCondition) { DoSomethingElse(); // don't complain } 谢谢Ryan是正确的(注意his链接指的是R#2.0帮助)。具体程序如下: 转到“重新竖琴>选项>语言>C#>格式样式>大括号布局” 将“if-else”

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

if (blnSomeCondition)
   DoSomething();  // complain

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

Ryan是正确的(注意his链接指的是R#2.0帮助)。具体程序如下:

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

  • 请记住,代码清理会做很多事情,而且它们不仅与代码格式有关(请参阅中的详细信息),因此请明智地使用该功能。

    Gorohoroh的解决方案很接近,但我必须选择“添加大括号”以强制它在单行场景中添加大括号,而不是选择“将大括号用于多行”。我必须在“力支架”下的所有六个下拉列表中设置,以捕捉所有场景:

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


    谢谢你的帮助

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

    UPD1:适用于2017年的ReSharper.x

    UPD2:适用于2018年的ReSharper.x

    UPD3:适用于2019.x版本的ReSharper

    UPD4:适用于ReSharper 2020.x
    对于2016年2月2日的ReSharper

    您应该编辑您的配置文件以进行清理。在“if-else”、“for”、“foreach”、“while”、“do-while”、“using”中为单个语句添加/删除大括号。此项可在C#=>代码样式中找到

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

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


    UPD:问题解决了,请参阅本文下的前两条评论。您可以按照屏幕截图所示配置它


    PS:对于那些在看到Imgur.com URL时遇到问题的人来说,如果它能帮助其他人节省时间,那么在我公司的一台机器上,尽管Sergey的帖子质量很高,但遵循他的建议是不够的

    关于相关设置(VS2017、R#2019,都是最新的),R#端的这些设置已经很好了,但我还必须在Visual Studio选项中对其进行修改:

    • 在选项窗口中,转到文本编辑器->C#->代码样式-> 格式->常规
    • 选中“执行其他代码清理 在格式化过程中,为单行控件添加/删除大括号 声明

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

        转到
        ReSharper>Options>code Editing>C#>Syntax Style>brakes

        这是ReSharper 2020.01的屏幕截图


        问得好,但是第一个语法有什么问题吗?大括号是不必要的。一些开发人员认为在单行代码块周围包含大括号是更好的做法,因为它更具可读性和可维护性。此外,我已经看到有多少次不使用大括号导致错误。有人做了一个更改,看到了if并添加了一个新行,但没有意识到它不会作为条件的一部分执行。这很微妙,但已经发生了。我对第一种格式没有什么问题,但我可以看到它可能会导致Hadi提到的场景中出现错误。我们的团队已经决定,这是我们希望强制执行的一个编码标准,这就是我提出这个问题的原因。我个人的偏好是不要将括号用于单行“if”,而是将“if”和下面的语句放在同一物理行上,例如“if(blnSomeCondition)Do Something();”。这在2016.3.2中的作用略有不同-在“选项”下,转到“如果”语句中的代码编辑-->C#-->代码样式-->大括号-->,然后在“首选项”下选择“始终强制执行”。其他选项有“不强制执行”、“如果正文是多行则强制执行”、“如果语句是多行则强制执行”等。非常感谢。在这些设置之后,我描述的清理工作正常。