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这在中是个问题,但从那时起,整个类都被删除了,所以问题消失了。