【发布时间】:2019-03-13 15:17:27
【问题描述】:
假设我有以下代码:
public static void PrintFoo(int i)
{
switch (i)
{
case 0:
Console.WriteLine("bar!");
break;
case 1:
Console.WriteLine("baz!");
break;
default:
// do nothing
break;
}
}
我想要带有注释的“默认”开关盒,因为它表明我故意不处理除 0 和 1 之外的任何值。如果我忽略默认情况,不清楚我是否打算什么都不做,或者只是忘记了。事实上,如果我删除默认情况,我会从错误窗口中显示的“IDE0010 Populate switch”中得到错误。
默认情况下,Resharper 认为这是一个错误,因此我关闭了该检查(Resharper 选项 -> 检查严重性 -> C# -> 代码中的冗余 -> 冗余空开关部分)。
我遇到的问题是,当我运行代码清理时,它会删除默认情况,包括注释。一般来说,我仍然希望代码清理来修复文件中的所有其他冗余,因此在代码清理配置文件中关闭“删除代码冗余”不是一个选项。有没有办法让它不删除 switch 语句中的默认情况?
编辑:似乎只有在代码清理窗口中选择“删除代码冗余”和“代码样式”的任何子项时,才会删除 default 案例。如果我取消选择所有代码样式项目,则不会删除默认大小写,或者如果我取消选择代码冗余,它也不会被删除。看来我可能不得不将此作为 Resharper 的错误提出。
【问题讨论】:
-
您使用什么 ReSharper 版本?在我的 R# 2018.3.4 中,我已取消选中
Resharper options | Inspection Severity页面上的“冗余空开关部分”检查,并且代码清理停止在您的示例中删除默认部分。 -
我也安装了 2018.3.4。如果选中该复选框然后运行清理,它会删除默认情况吗?也许还有其他一些我设置不同的选项?
-
如果我勾选了该复选框并运行清理,它确实会删除冗余。您是否安装了任何插件(ReSharper | Extension Manager)?您是否使用“完全清理”配置文件?
-
似乎在“代码清理”配置窗口中,如果我选择了“代码样式”下的任何内容作为清理的一部分,默认情况将被删除。如果没有选择它们,它不会被删除。因此,完整清理配置文件将其删除。没有安装 resharper 扩展。
-
请在此处resharper-support.jetbrains.com/hc/en-us 提交请求并附上您的设置(ReSharper | 管理选项 | 导出到此计算机层的文件)。看起来我们需要更多配置信息来重现问题。
标签: visual-studio-2017 resharper