仅在发布配置中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);
根据Q更新,Logger.Debug()
具有Conditional
属性集,这就是原因。
您可以通过添加条件"CODE_ANALYSIS"
属性来修复它:
[Conditional("DEBUG")]
[Conditional("CODE_ANALYSIS")]
public abstract void Debug(Func<string> message);
(我遇到了同样的问题,并找到了解决方案)