gpt4 book ai didi

c# - 检查 switch 语句中是否缺少默认情况

转载 作者:可可西里 更新时间:2023-11-01 09:15:49 25 4
gpt4 key购买 nike

对于 ReSharper 6.1,没有针对 C# 开关中缺少默认语句的内置检查项,但自定义模式似乎总体上是可靠的。对于 if block 缺少 else 语句之类的情况,我已经对它们进行了一些处理,但我不确定如何检查是否缺少默认值。

这是我目前所拥有的:

搜索模式

switch($expr$)
{
case $val$:
$statement$
break;
$missingDefault$
}

替换模式

switch($expr$)
{
case $val$:
$statement$
break;
default:
break;
}

其中 $expr$ 是一个表达式,$val 是一个表达式,$statement$ 是任意数量的语句,$missingDefault$ 是最多 0 个语句。

这里的问题如下:

  • 我们可以有任意数量的 case,它们本身是由一个或多个语句(case + break 等)和任意数量的表达式组成的集合
  • 对于搜索模式匹配,我们应该只匹配最后一个案例之后没有任何内容的情况(即没有默认值)
  • 我们需要搜索模式中的“中断”,以便我们可以定义其后不存在的语句。无论如何,编译器需要这个中断。

显然,此搜索模式仅匹配包含单个案例且没有默认值的事件,因此相对无用。我需要一个模式来匹配具有任意数量情况的开关,其中任意数量可能包含也可能不包含中断(最后一种情况除外)并且可以包含任意数量的语句,并且没有默认值.

感谢您的帮助。

最佳答案

我对此有很好的破解,但我认为目前不可能 (Resharper 7)

话虽如此,您可以随时在 Resharper forum 上提问

我唯一能提供的可能有用的就是找到的模式

1) 所有 switch 语句

switch($expr$)
$statement$

2) 以default结尾的switch语句;中断:

switch($expr$)
{
$statement$
default:
break;
}

然后您可以使用这两个列表的差异来确定哪些列表缺少 default;break; 语句。例如,在我的项目中,第一个出现 231 次,第二个出现 58 次。

我意识到这与您想要的相差很长(没有替换!),但这是我能收集到的最好的。

关于c# - 检查 switch 语句中是否缺少默认情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com