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



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

_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函数时,有没有办法抑制此警告?我真的不想在我使用的每一种方法中都抑制它。

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

例如:

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

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

  1. 单独抑制违规行为
  2. 禁用规则,或
  3. 替换一个自定义规则,该规则的行为符合您的意愿

我倾向于在这类事情上倾向于#3,但ymmv。。。此外,如果你强烈认为你应该能够控制CA1303的行为,这是一个值得考虑的要求https://connect.microsoft.com/VisualStudio或http://visualstudio.uservoice.com/forums/121579-visual-studio.

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

只有当相关参数或属性名称包含"文本"、"消息"或"标题"时,CA1303才会触发。如果将参数传递给Console.WriteConsole.WriteLine,则该参数也不能命名为"value"或"format"。

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

相关内容

  • 没有找到相关文章

最新更新