SP2101:方法体不能包含超过120个代码行 - 如何抑制它?

时间:2012-04-11 15:44:06

标签: c# stylecop suppressmessage

我有一个方法可以处理大量的文件类型:

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程序无法解决此问题。

3 个答案:

答案 0 :(得分: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行),你真的应该从文件或数据库加载这个地图。这将当然减少行数。

答案 1 :(得分:6)

我是StyleCop +的作者。

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

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

  • 已禁用,在这种情况下,这意味着您根本不需要它
  • 压制 代码中的某个特定位置(当您仍然需要它时,但不在此处)

此外,它是可配置的。如果您要使用此规则,则可以为您自己的配置添加任意数字而不是 120 120 只是默认值。

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

如果您需要任何配置帮助,请与我们联系。

答案 2 :(得分:4)

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