1

我很确定我要问的是不可能的,但我希望代码分析专家能够提出解决方法。

我正在尝试找到一种GlobalSuppressions.cs基于功能排除代码分析警告的方法。例如,我想禁用

"Microsoft.Globalization", "CA1305:SpecifyIFormatProvider"

在 ****all**** 我的日志记录语句中(我使用 CommonLogging 外观),因此签名将类似于:

Common.Logging.ILog.Trace(System.Action<Common.Logging.FormatMessageHandler>)

无论类型、命名空间或方法名称如何,我都希望在整个项目中的任何地方都这样做......

看看其他 答案,现在这似乎是不可能的......或者是吗?

4

1 回答 1

0

这确实是不可能的。当您调用的方法同时具有接受的重载string和接受的重载时,string, IFormatProvider将触发此规则。它可能应该,因为我希望您想要文化敏感或文化不敏感的日志文件。在这种情况下,代码分析会迫使您做出选择。

您可以做的是编写自己的规则并禁用此规则。或者您可以修复违规行为并将它们排除在外。快速的正则表达式搜索+替换可能会在几秒钟内为您解决这些问题。

或者,您可以编写一个类,充当您的代码和 Common.Logging 代码之间的代理/外观,并且只接受string变体。然后,您可以重构代码以使用您的方法。这样,您只需修复一个违规行为,该违规行为将保留在新创建的外观中。

于 2013-01-11T23:03:51.277 回答