gpt4 book ai didi

c# - 无法抑制 CA1502

转载 作者:行者123 更新时间:2023-12-02 17:16:43 25 4
gpt4 key购买 nike

我有一个类是这样开始的:

namespace Tools.Builders
{
internal abstract class Builder
{
[SuppressMessage("Microsoft.Maintainability", "CA1502")]
private static readonly Dictionary<string, Func<ILogger, Builder>> _builders =
new Dictionary<string, Func<ILogger, Builder>>
{
{ "1", (x) => {return new BuilderType1(x);} },
{ "2", (x) => {return new BuilderType2(x);} },
{ "3", (x) => {return new BuilderType3(x);} },
{ "4", (x) => {return new BuilderType4(x);} },
{ "5", (x) => {return new BuilderType5(x);} },
{ "6", (x) => {return new BuilderType6(x);} },
{ "7", (x) => {return new BuilderType7(x);} },
{ "8", (x) => {return new BuilderType8(x);} },
{ "9", (x) => {return new BuilderType9(x);} },
};
protected ILogger _logger;
protected Builder(ILogger logger)
{
_logger = logger;
}
//...

这会导致形式为“Builder.Builder() 的圈复杂度为...”的 CA1502 警告(这是此类初始化程序的已知问题)。但是我的问题是我无法抑制警告。我试过将 SuppressMessageAttribute 放在代码中的各种不同位置,但它只是被忽略了。任何人有什么建议吗?

最佳答案

我能够通过使用将构造函数指定为目标的程序集级属性来抑制此消息:

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("Microsoft.Maintainability",
"CA1502:AvoidExcessiveComplexity",
Scope = "member",
Target = "Tools.Builders.Builder.#.cctor()")]

这个属性可以放在程序集中的任何代码文件中。

为了将来引用,我通过在错误列表窗口(或 VS2013 及更早版本中的代码分析窗口)中右键单击 CA 警告并选择抑制 -> 在抑制文件中来生成此属性。

关于c# - 无法抑制 CA1502,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46015668/

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