有没有一种方法可以标记代码,告诉ReSharper不要格式化它?

35

我经常使用ReSharper的“Clean Up Code”命令将我的代码格式化为我们的编码风格,然后再将其检入源代码控制。总体来说,这个功能很好用,但有些代码最好手动格式化(例如,由于ReSharper中缩进规则的原因,链式linq方法或多行三元运算符具有奇怪的缩进,会将它们推到右侧)。

是否有办法标记文件的某些部分,以告诉ReSharper不要格式化该区域?我希望有类似于ReSharper抑制其他警告/功能的标记。如果没有,是否有改变设置组合的方法,使ReSharper能够正确地格式化缩进?

编辑:

我在ReSharper论坛上找到了这篇文章,称生成的代码段(如在ReSharper选项页面中定义的)在代码清理中被忽略。然而,尝试过后,似乎并没有被忽略。


4
你真的想要在代码中加入R#特定的标记吗?噫噫噫……这样会"污染"你的代码。 - Oded
5
@Oded: 不是很好,但我更喜欢易于阅读的代码布局而非难以辨认的代码。 - adrianbanks
1
是的,它一直把我的集合初始化器和lambda主体向右推。如果你调整格式设置,可以在一定程度上缓解,但它仍然会缩进至少两个步骤太多。 - Skurmedel
2
ReSharper 的绝对疯狂的重新格式化行为是我放弃它,转而使用 CodeRush 的主要原因之一。我不应该与我的重构工具作斗争,以便获得我想要的结果。 - ZombieSheep
2
我在 C# 的格式设置中的“其他”和“对齐多行结构”下找到了解决我的问题的方法,但可能并不能解决你的问题。 - Skurmedel
显示剩余3条评论
3个回答

21

Resharper>选项>语言>C#>格式样式>其他>

取消选中 "缩进匿名方法体" 和 "缩进数组、对象和集合初始化块" 以及任何其他你喜欢的选项。


“匿名方法体”选项可行(以其略微奇怪的DoSomething()方法为例),但是R#仍然会对其他块进行大缩进格式化。 - adrianbanks
@adrianbanks - 通过取消选中“缩进数组、对象和集合初始化器块”,我的数组和初始化器保持不变。不过,我不确定你所指的DoSomething()是什么。 - Sky Sanders
@adrianbanks - 另外,如果你的代码块已经被之前的重新格式化推出来了,R# 将会保持它们不变。将第一个左大括号放在你想要的位置,按下 CTRL-D 来格式化剩下的部分,后续的代码清理将不会触及它。 - Sky Sanders

3

作为最后的办法,如果你有遗留代码不想格式化,但是想要添加到类中的内容变得更加格式化,那么可以将该类变成部分类,并将新代码放入新文件中。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接