C# ReSharper-在单行周围强制使用大括号
当不使用大括号包围单行代码块时,我是否可以将ReSharper配置为修复C#代码,如下所示: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”
if (blnSomeCondition)
DoSomething(); // complain
if (blnSomeOtherCondition)
{
DoSomethingElse(); // don't complain
}
谢谢Ryan是正确的(注意his链接指的是R#2.0帮助)。具体程序如下:
请记住,代码清理会做很多事情,而且它们不仅与代码格式有关(请参阅中的详细信息),因此请明智地使用该功能。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#-->代码样式-->大括号-->,然后在“首选项”下选择“始终强制执行”。其他选项有“不强制执行”、“如果正文是多行则强制执行”、“如果语句是多行则强制执行”等。非常感谢。在这些设置之后,我描述的清理工作正常。