SP2101:方法主体不能包含超过 120 行代码 - 如何禁止显示
本文关键字:代码 禁止显示 方法 主体 不能 包含超 SP2101 | 更新日期: 2023-09-27 18:30:41
我有一个方法可以处理大量文件类型,如下所示:
case ".jpg":
res = "image/jpeg";
break;
case ".pdf":
res = "application/pdf";
break;
case ".doc":
res = "application/msword";
break;
..这持续了几百行。我遇到了一个StyleCop错误:SP2101: Method body must not contain more than 120 code lines
我四处找了一下,也找不到这方面的任何东西,更不用说压制了。有谁知道如何抑制此消息?
编辑:我认为这是一个StyleCop+
错误,无法使用FxCop程序复制抑制来解决。
你可以将其重构为Dictionary<string,string>
:
var mimeTypesPerFileType = new Dictionary<string,string>();
mimeTypesPerFileType.Add(".jpg", "image/jpeg");
mimeTypesPerFileType.Add(".pdf", "application/pdf");
...
这将使方法中的行数减少约三分之一(尽管这可能在单独的方法/字段中,因此您不需要每次都重新填充字典)。
然后该方法只是更改为:
return mimeTypesPerFileType[fileType];
更新:
看到你有大约 400 个奇数个案例(方法中大约有 1300 行),你真的应该从文件或数据库中加载这个映射。这肯定会减少行数。
我是StyleCop+的作者。
它添加到原始StyleCop功能的规则之一是SP2101(MethodMustNotContainMoreLinesThan),它检查方法的大小。
像任何其他StyleCop警告一样,它可能是:
- 禁用,在这种情况下,这意味着您只是不需要它
- 被抑制为代码中的某个特定位置(当您通常仍然需要它时,但不是在这里)
此外,它是可配置的。如果要使用此规则,可以为自己的配置输入任意数字而不是 120。120 只是一些默认值。
此规则的要点是围绕可维护性。检查您是否落入意大利面条代码可能非常重要。StyleCop只是一个工具,让你能够控制它。StyleCop+提供了更多规则来检查。因此,如果您想使用它们 - 请继续。如果您不这样做 - 只需禁用它。它是一种真正需要在使用前配置的工具。
如果您需要任何配置帮助,请告诉我。
我不使用StyleCop,但一个建议可能是改变你的方法。 您可以将所有这些值对存储在 XML 文件等中,并使用List(Of T)
来组织它们。 您的方法可以减少到几行。