仅在发布配置中CA1801误报

本文关键字:CA1801 误报 配置 布配置 | 更新日期: 2023-09-27 18:10:11

我的方法如下:

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

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

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

CA1801检查未使用的参数CommonExtensions的参数message。Debug(此Logger,字符串)'永远不会被使用。删除参数或在方法体中使用它。FakeItEasy commonextensions . cs101

CA1801检查未使用的参数CommonExtensions的参数logger。Debug(此Logger,字符串)'永远不会被使用。删除参数或在方法体中使用它。FakeItEasy commonextensions . cs101

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

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

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


更新

Logger.Debug()签名如下:

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

仅在发布配置中CA1801误报

根据Q更新,Logger.Debug()具有Conditional属性集,这就是原因。

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

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

(我遇到了同样的问题,并找到了解决方案)