C# 仅在版本配置中CA1801为假阳性

C# 仅在版本配置中CA1801为假阳性,c#,code-analysis,C#,Code Analysis,我的方法如下 public static void Debug(this Logger logger, string message) { logger.Debug(() => message); } 当我使用调试配置运行代码分析时,没有收到任何警告 当我使用Release config运行代码分析时,我得到: CA1801查看未使用的参数从未使用“CommonExtensions.Debug(此记录器,字符串)”的参数“message”。删除参数或在方法体中使用它。Fakeit

我的方法如下

public static void Debug(this Logger logger, string message)
{
    logger.Debug(() => message);
}
当我使用调试配置运行代码分析时,没有收到任何警告

当我使用Release config运行代码分析时,我得到:

CA1801查看未使用的参数从未使用“CommonExtensions.Debug(此记录器,字符串)”的参数“message”。删除参数或在方法体中使用它。Fakeitesy.cs 101

CA1801查看未使用的参数从未使用“CommonExtensions.Debug(此记录器,字符串)”的参数“logger”。删除参数或在方法体中使用它。Fakeitesy.cs 101

这显然是错误的。我在方法体中使用这两个参数。如果我删除了其中任何一个参数,那么代码就不会编译

还有其他人经历过类似的事情吗?我是否在代码分析中发现了一个bug

(我在两种配置下使用相同的规则集。)


更新

Logger.Debug()
签名如下:

[Conditional("DEBUG")]
public abstract void Debug(Func<string> message);
[条件(“调试”)]
公共摘要无效调试(Func消息);

根据Q更新,
Logger.Debug()
设置了
Conditional
属性,这就是原因。

您可以通过添加Conditional
“code\u ANALYSIS”
属性来修复它:

[Conditional("DEBUG")]
[Conditional("CODE_ANALYSIS")]
public abstract void Debug(Func<string> message);
[条件(“调试”)]
[条件(“代码分析”)]
公共摘要无效调试(Func消息);

(我有并找到了。)

Logger.Debug()的声明是什么?我用
public void Debug(Func f)
尝试了这个方法,它对我很好(所有CA警告都打开了)。这是VS2012更新1、.Net 4或.Net 4.5版本的版本。@MatthewWatson谢谢-您提示我找到答案。将很快更新谢谢!IIRC这在中是个问题,但从那时起,整个类都被删除了,所以问题消失了。