Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Resharper-执行代码清理时保留命名参数_C#_Resharper_Named Parameters_Resharper 9.0 - Fatal编程技术网

C# Resharper-执行代码清理时保留命名参数

C# Resharper-执行代码清理时保留命名参数,c#,resharper,named-parameters,resharper-9.0,C#,Resharper,Named Parameters,Resharper 9.0,我们采用了一种约定,即当调用带有“不明显”参数的C#函数时,即使不需要,我们也会使用命名参数 例如 而不是 obj.Process(true) 虽然这是不必要的,但当浏览代码以查看发生了什么时,尤其是对于布尔数或幻数,这会使它变得更容易 然而,resharper的代码清理习惯于删除这些代码。我还没有找到一种方法来告诉它保留命名参数——有吗 您要查找的设置位于“代码清理\C#\删除代码冗余”下 我知道这可能不是您希望的答案,但您可以通过取消选中该设置(同时保留所有其他冗余)来停止删除参数名 您可

我们采用了一种约定,即当调用带有“不明显”参数的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