10

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

_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

4 回答 4

15

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

例如:

void Info([Localizable(false)] string message);
于 2014-03-25T20:21:09.057 回答
3

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

  1. 个别制止违法行为,
  2. 禁用规则,或
  3. 替换以您喜欢的方式运行的自定义规则。

对于这类事情,我倾向于 #3,但是 ymmv...此外,如果您强烈认为您应该能够控制 CA1303 的行为,那么可以考虑在https://connect.microsoft提出请求.com/VisualStudiohttp://visualstudio.uservoice.com/forums/121579-visual-studio

于 2012-03-27T12:25:06.300 回答
3

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

CA1303仅在相关参数或属性名称包含“Text”、“Message”或“Caption”时才会触发。如果参数传递给Console.Writeor Console.WriteLine,则参数也不能命名为“值”或“格式”。

于 2013-03-26T02:12:09.157 回答
2

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

于 2012-09-19T21:30:50.077 回答