【问题标题】:How to stop resharper removing empty switch default case如何停止 resharper 删除空开关默认情况
【发布时间】: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


【解决方案1】:

所以我向调查问题的 jetbrains 报告了这个问题。原来“冗余空开关部分”的设置存储在“团队共享”设置层中,代码清理正在从错误的层中提取设置。

解决方案是转到 Resharper -> 管理选项 -> 双击“这台计算机”并在那里更改设置。

感谢 Alexander Kurakin 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多