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程序复制抑制来解决。

SP2101:方法主体不能包含超过 120 行代码 - 如何禁止显示

你可以将其重构为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警告一样,它可能是:

  • 禁用,在这种情况下,这意味着您只是不需要它
  • 被抑制为代码中的某个特定位置(当您通常仍然需要它时,但不是在这里)

此外,它是可配置的。如果要使用此规则,可以为自己的配置输入任意数字而不是 120120 只是一些默认值。

此规则的要点是围绕可维护性。检查您是否落入意大利面条代码可能非常重要。StyleCop只是一个工具,让你能够控制它。StyleCop+提供了更多规则来检查。因此,如果您想使用它们 - 请继续。如果您不这样做 - 只需禁用它。它是一种真正需要在使用前配置的工具。

如果您需要任何配置帮助,请告诉我。

我不使用StyleCop,但一个建议可能是改变你的方法。 您可以将所有这些值对存储在 XML 文件等中,并使用List(Of T)来组织它们。 您的方法可以减少到几行。