我可以抑制某个类的所有代码分析消息吗?

时间:2012-03-26 12:12:21

标签: .net code-analysis suppression

每当我用方法调用我的记录器时,例如

_logger.Debug("Connecting to database...");

我收到警告:

CA1303 : Microsoft.Globalization: 
Method 'Database.Connect()' passes a literal 
string as parameter  'message' of a call to 'ILogger.Debug(string)'. 
Retrieve the following string(s) from a resource table instead: 
"Connecting to database...".

每次使用ILogger函数时,有没有办法抑制此警告? 我真的不想在我使用它的每一种方法中压制它。

4 个答案:

答案 0 :(得分:14)

如果您控制ILogger接口,则可以使用值为false的Localizable属性来指示该值不可本地化。

例如:

void Info([Localizable(false)] string message);

答案 1 :(得分:3)

FxCop / VS代码分析和CA1303规则都不能配置为以这种方式忽略特定目标。你基本上有三个选择:

  1. 单独抑制违规行为,
  2. 禁用规则或
  3. 替换行为符合您喜欢的自定义规则。
  4. 我倾向于倾向于#3这样的事情,但是ymmv ......另外,如果你强烈认为你应该能够控制CA1303的行为,那么这需要考虑{{3} }或https://connect.microsoft.com/VisualStudio

答案 2 :(得分:3)

我遇到了这个问题,发现最简单的解决方案是将我的日志记录方法的参数从“message”重命名为其他内容。

CA1303仅在相关参数或属性名称包含“Text”,“Message”或“Caption”时触发。如果参数传递给Console.WriteConsole.WriteLine,则参数也不能命名为“value”或“format”。

答案 3 :(得分:1)

如果将GeneratedCode属性应用于类,则代码分析将不会分析您的类。