2

我有一种方法可以遍历大量文件类型,如下所示:

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

4

3 回答 3

8

可以将其重构为Dictionary<string,string>

var mimeTypesPerFileType = new Dictionary<string,string>();
mimeTypesPerFileType.Add(".jpg", "image/jpeg");
mimeTypesPerFileType.Add(".pdf", "application/pdf");
...

这会将方法中的行数减少大约三分之一(尽管这可能在单独的方法/字段中,因此您不需要每次都重新填充字典)。

然后该方法更改为:

return mimeTypesPerFileType[fileType];

更新:

看到您有大约 400 个奇怪的案例(方法中大约有 1300 行),您确实应该从文件或数据库中加载此地图。这肯定会减少行数。

于 2012-04-11T15:55:44.963 回答
6

我是 StyleCop+ 的作者。

它添加到原始 StyleCop 功能的规则之一确实是SP2101 (MethodMustNotContainMoreLinesThan),它检查您的方法的大小。

像任何其他 StyleCop 警告一样,它可能是:

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

此外,它是可配置的。如果你想使用这个规则,你可以为你自己的配置输入任何数字而不是120 。120只是一些默认值。

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

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

于 2012-04-11T20:34:47.043 回答
4

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

于 2012-04-11T15:54:17.563 回答