C# Resharper-执行代码清理时保留命名参数
我们采用了一种约定,即当调用带有“不明显”参数的C#函数时,即使不需要,我们也会使用命名参数 例如 而不是C# Resharper-执行代码清理时保留命名参数,c#,resharper,named-parameters,resharper-9.0,C#,Resharper,Named Parameters,Resharper 9.0,我们采用了一种约定,即当调用带有“不明显”参数的C#函数时,即使不需要,我们也会使用命名参数 例如 而不是 obj.Process(true) 虽然这是不必要的,但当浏览代码以查看发生了什么时,尤其是对于布尔数或幻数,这会使它变得更容易 然而,resharper的代码清理习惯于删除这些代码。我还没有找到一种方法来告诉它保留命名参数——有吗 您要查找的设置位于“代码清理\C#\删除代码冗余”下 我知道这可能不是您希望的答案,但您可以通过取消选中该设置(同时保留所有其他冗余)来停止删除参数名 您可
obj.Process(true)
虽然这是不必要的,但当浏览代码以查看发生了什么时,尤其是对于布尔数或幻数,这会使它变得更容易
然而,resharper的代码清理习惯于删除这些代码。我还没有找到一种方法来告诉它保留命名参数——有吗 您要查找的设置位于“代码清理\C#\删除代码冗余”下 我知道这可能不是您希望的答案,但您可以通过取消选中该设置(同时保留所有其他冗余)来停止删除参数名 您可能可以在代码清理中设置不同的配置文件来解决这个问题,但您最好向JetBrains的同事寻求解决方案 HTH,
Eric尽管你可以按照@EricWalker所说的去做,但我想提出另一个选择
您可以启动ReSharper选项,查找检查严重性,然后转到冗余显式参数名称规范,并将其更改为不显示。这样,您就不会丢失所有其他用于删除冗余代码的良好清理(如删除全名限定符)。更新: 从v2017.1.3(2017-08-28)开始,该解决方案似乎不再有效
我目前正在使用ReSharper v2017.1(2017-06-01),JetBrains似乎还没有解决这个问题 如前所述,目前保留“命名参数”的最后手段是将选项“命名表达式(变量、属性、方法等)”设置为“命名参数” 这当然不是最好的出路
更新: 我在JetBrains论坛上发现了一个小把戏。 通过在文件顶部添加这行代码,可以取消将命名参数视为冗余
// ReSharper disable ArgumentsStyleNamedExpression
您必须在ReSharper设置中进行一些较小的配置。为了保持自动添加//ReSharper disable ArgumentsStyleNamedExpression的简单性,我将此指令添加到文件头文本中,如图2所示
图2-添加ArgumentsStyleNamedPression规则
之后,您必须在代码清理配置中选中更新文件头选项,如图3所示
图3-选中“更新文件头”选项
在这种情况下,当代码清理开始时,它首先添加参数stylenamedexpression规则,并将代码样式应用于文件
添加此规则后,您可以转到工具|选项|环境|字体和颜色|重新锐化参数标识符,并更改本例的突出显示颜色,以便直观地区分参数和参数名称,如图4所示
图4-参数名称突出显示
不幸的是,这种保留参数名称的方法并不总是有效(ReSharper可以有选择地保留/删除参数名称)。在ReSharper 2018.1中 有两个相关步骤。您可能希望同时执行这两项操作,但这取决于您希望如何配置ReSharper 首先,在
Resharper->Options->code-Inspection->Inspection-Severity
中,禁用“对文字值使用首选参数样式”代码样式。(对于bools,“[…]表示文字值”是相关设置,尽管我选择禁用所有设置。)
此设置还链接到ReSharper->Options->code Editing->code Style->Arguments
设置,因此这些设置现在应该自动更改为“不显示”,而不是“提示”:
其次,由于“应用参数样式(命名与位置)”,无法使用默认的ReSharper代码清理配置文件-必须在代码清理配置文件中禁用此选项。
要在方法调用中显示参数名称,请转到:
Resharper
⇨ <代码>选项⇨ <代码>代码编辑⇨ <代码>C#⇨ <代码>语法样式⇨ <代码>参数
然后将所有下拉列表值设置为“命名参数”。
此外,选中“跳过单个参数”,仅当存在多个参数时才显示方法的命名参数
上述方法在Resharper版本
2020.2.4
上得到验证,谢谢,这正是我想要的(特别是它可以单独处理常量和其他表达式,这是我们最常见的情况)。遗憾的是,你不能说“提示但不要清理”。谢谢@Matthias,他认为应该有更好的方法,但不知道检查的严重性和代码清理是这样联系在一起的。今天学到了一些新东西。在ReSharper Ultimate 2016.1.2中,我不得不使用“命名表达式使用首选参数样式”->“不显示”@MarcelPopescu,我已经在v2017.1.3中尝试过了。似乎此解决方案不再有效。严格来说,在清理上下文中(例如使用cleanupcode.exe cmd工具),唯一必要的步骤是复制和修改“完全清理”配置文件,以不执行“应用参数样式(命名与位置)”。
// ReSharper disable ArgumentsStyleNamedExpression