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

Dev*_*ave 2 c# stylecop suppressmessage

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

case ".jpg": 
    res = "image/jpeg"; 
    break;
case ".pdf": 
    res = "application/pdf"; 
    break;
case ".doc": 
    res = "application/msword"; 
    break;
Run Code Online (Sandbox Code Playgroud)

..这持续了几百行.我遇到了StyleCop错误:SP2101: Method body must not contain more than 120 code lines

我四处搜寻,找不到任何东西,更不用说压制了.有谁知道如何压制这条消息?

编辑:我认为这是一个StyleCop+错误,使用FxCop程序复制抑制无法解决.

Ode*_*ded 8

可以将它重构为Dictionary<string,string>:

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

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

然后该方法只是改为:

return mimeTypesPerFileType[fileType];
Run Code Online (Sandbox Code Playgroud)

更新:

看到你有大约400个奇怪的情况(方法中大约1300行),你真的应该从文件或数据库加载这个地图.这肯定会减少行数.


Ole*_*uev 6

我是StyleCop +的作者.

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

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

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

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

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

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

  • 此规则的抑制行将是[SuppressMessage("StyleCopPlus.StyleCopPlusRules","SP2101:MethodMustNotContainMoreLinesThan",Justification ="Some justification")] (5认同)