仅在Release配置中为CA1801误报

时间:2013-04-20 10:18:01

标签: c# code-analysis

我的方法如下:

public static void Debug(this Logger logger, string message)
{
    logger.Debug(() => message);
}

当我使用Debug配置运行代码分析时,我没有收到任何警告。

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

  

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

  

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

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

有没有其他人经历过类似的事情?我是否发现了代码分析中的错误?

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


更新

Logger.Debug()签名如下:

[Conditional("DEBUG")]
public abstract void Debug(Func<string> message);

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以通过添加条件"CODE_ANALYSIS"属性来修复它:

[Conditional("DEBUG")]
[Conditional("CODE_ANALYSIS")]
public abstract void Debug(Func<string> message);

(我有same problem并找到a solution。)