禁止有条件方法的代码分析警告 [英] Suppress code analysis warnings for conditional methods
问题描述
对调用条件
方法的代码运行代码分析(Visual Studio 2015)会导致未使用的本地(CA1804)或未使用的参数(CA1801)的警告。例如。 for:
使用System.Diagnostics;
命名空间ConsoleApplication1
{
类程序
{
[有条件(NEVER_DEFINED)]
static void日志b $ b {
System.Console.WriteLine(Demo conditional message logging:+ message);
}
static void Main(string [] args)
{
string message =当NEVER_DEFINE是#defined时,只记录日志。
Log(message);
方法(其他消息);
}
static void方法(string messageToLog)
{
Log(messageToLog);
}
}
}
代码分析结果: / p>
-
警告CA1801
Program.Main的参数'args' (string [])'从不使用。
ConsoleApplication1 ... \Program.cs 14
- 警告CA1804
'Program.Main(string [])'声明一个类型为'string'的变量,'message',它从不使用,分配给。使用此变量或删除它。
ConsoleApplication1 ... \Program.cs 15
-
警告CA1801
'Program.Method(string)'的参数'messageToLog'从不使用。删除参数或在方法体中使用它。
ConsoleApplication1 ... \Program.cs 22
我考虑关于消息
和 messageTolog
的警告作为假阳性。是否有一种方法让代码分析使用参数来处理条件方法?
添加 CODE_ANALYSIS
条件属性到被调用的条件方法,例如:
使用System.Diagnostics;
命名空间ConsoleApplication1
{
类程序
{
[有条件(NEVER_DEFINED)]
[有条件(CODE_ANALYSIS)]
static void Log(string message)
{
System.Console.WriteLine(Demo conditional message logging:+ message);
}
static void Main(string [] args)
{
string message =当NEVER_DEFINE是#defined时,只记录此事。
Log(message);
方法(其他消息);
}
static void方法(string messageToLog)
{
Log(messageToLog);
}
}
}
> Log(string)被认为使用其参数,并且所有提供给它的参数和局部变量也被考虑使用。
Running code analysis (Visual Studio 2015) on code that calls Conditional
methods causes warnings for unused locals (CA1804) or unused parameters (CA1801). E.g. for:
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
[Conditional ("NEVER_DEFINED")]
static void Log(string message)
{
System.Console.WriteLine("Demo conditional message logging: " + message);
}
static void Main(string[] args)
{
string message = "Only log this when `NEVER_DEFINE` is #defined";
Log(message);
Method("other message");
}
static void Method(string messageToLog)
{
Log(messageToLog);
}
}
}
Code Analysis results in:
Warning CA1801
Parameter 'args' of 'Program.Main(string[])' is never used. Remove the parameter or use it in the method body.
ConsoleApplication1 …\Program.cs 14
Warning CA1804
'Program.Main(string[])' declares a variable, 'message', of type 'string', which is never used or is only assigned to. Use this variable or remove it.
ConsoleApplication1 …\Program.cs 15
Warning CA1801
Parameter 'messageToLog' of 'Program.Method(string)' is never used. Remove the parameter or use it in the method body.
ConsoleApplication1 …\Program.cs 22
I consider the warnings about message
and messageTolog
as false positives. Is there a way to have the code analysis treat the conditional methods as using the parameters?
Add the CODE_ANALYSIS
conditional attribute to the called conditional method, e.g.:
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
[Conditional ("NEVER_DEFINED")]
[Conditional ("CODE_ANALYSIS")]
static void Log(string message)
{
System.Console.WriteLine("Demo conditional message logging: " + message);
}
static void Main(string[] args)
{
string message = "Only log this when `NEVER_DEFINE` is #defined";
Log(message);
Method("other message");
}
static void Method(string messageToLog)
{
Log(messageToLog);
}
}
}
Now Log(string)
is considered using its parameters and all parameters and local variables supplied to it are considered used as well.
这篇关于禁止有条件方法的代码分析警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!