gpt4 book ai didi

c# - 抑制条件方法的代码分析警告

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:02 24 4
gpt4 key购买 nike

对调用 Conditional 方法的代码运行代码分析 (Visual Studio 2015) 会导致针对未使用的局部变量 (CA1804) 或未使用的参数 (CA1801) 发出警告。例如。对于:

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);
}
}
}

代码分析结果:

  • 警告 CA1801

    从未使用过“Program.Main(string[])”的参数“args”。移除参数或在方法体中使用它。

    ConsoleApplication1 …\Program.cs 14

  • 警告 CA1804

    “Program.Main(string[])”声明了一个类型为“string”的变量“message”,它从未被使用或仅被分配给。使用此变量或将其删除。

    ConsoleApplication1 …\Program.cs 15

  • 警告 CA1801

    从未使用过“Program.Method(string)”的参数“messageToLog”。删除参数或在方法体中使用它。

    ConsoleApplication1 …\Program.cs 22

我认为有关 messagemessageTolog 的警告是误报。有没有办法让代码分析将条件方法视为使用参数?

最佳答案

您可以在 System.Diagnostics.CodeAnalysis 中使用 [SuppressMessageAttribute]。但是,您必须将它应用于调用 Conditional 方法的每个方法(或在更广泛的范围内应用它);例如:

[System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1804")]
static void Main(…)
{

}

[System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Performance", "CA1801")]
static void Method(…)
{

}

关于c# - 抑制条件方法的代码分析警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com