Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio VS2010代码分析。禁止显示消息CA1051:DonotDeclarAvisibleSinstanceFields用于所有类成员_Visual Studio_Visual Studio 2010_Code Analysis_Fxcop_Suppressmessage - Fatal编程技术网

Visual studio VS2010代码分析。禁止显示消息CA1051:DonotDeclarAvisibleSinstanceFields用于所有类成员

Visual studio VS2010代码分析。禁止显示消息CA1051:DonotDeclarAvisibleSinstanceFields用于所有类成员,visual-studio,visual-studio-2010,code-analysis,fxcop,suppressmessage,Visual Studio,Visual Studio 2010,Code Analysis,Fxcop,Suppressmessage,我有一门课是这样的: public class Foo { public readonly int A = 1; public readonly int B = 2; } 当我运行VS2010内置代码分析工具时,我得到了相同的警告: 如果“字段”…“在其声明类型之外可见,请将其可访问性更改为private,并添加一个与该字段当前具有相同可访问性的属性,以提供对它的访问” 我想对我的类Foo中的所有字段取消显示此警告,但我不想用SuppressMessage属性标记每个字段,如下

我有一门课是这样的:

public class Foo
{
    public readonly int A = 1;
    public readonly int B = 2;
}
当我运行VS2010内置代码分析工具时,我得到了相同的警告: 如果“字段”…“在其声明类型之外可见,请将其可访问性更改为private,并添加一个与该字段当前具有相同可访问性的属性,以提供对它的访问”

我想对我的类Foo中的所有字段取消显示此警告,但我不想用SuppressMessage属性标记每个字段,如下所示:

public class Foo
{
    [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
    public readonly int A = 1;
    [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
    public readonly int B = 2;
}
[SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
public class Foo
{
    public readonly int A = 1;
    public readonly int B = 2;
}
我想用如下代码标记所有类成员:

public class Foo
{
    [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
    public readonly int A = 1;
    [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
    public readonly int B = 2;
}
[SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
public class Foo
{
    public readonly int A = 1;
    public readonly int B = 2;
}
但是这段代码不起作用,我仍然收到代码分析警告。
如何正确执行此操作?

无法使用SuppressMessageAttribute一次抑制超过1条消息

如讨论所示,但相关部分为:

您对该消息有一个常见的误解

每次在源文件中放置SuppressMessage时,都会抑制 只有一个问题(网格中的一行)。句号

SuppressMessage可以放置在违规的“附近”或 模块级。模块级、部件级和全局抑制 所有的意思都是一样的。通过在模块级别放置,您不会 一次抑制问题的多个实例。你只需要 在代码的其他位置找到SuppressMessage。主要 好处是,例如,您可以收集所有抑制 与单个文件中的程序集相关(例如, GlobalSuppressions.cs)

使用模块级SuppressMessage时,必须指定 目标。目标必须与GUI中报告的目标完全匹配 违反规则

无法使用SuppressMessage来抑制 类的整个范围或命名空间的整个范围


您可以使用一组规则创建代码分析规则文件,如:


请参阅逐步演练:


我认为您发现了一个bug,请发布到connect.microsoft.com。有任何最终解决方案吗?非常感谢!看来我真的没有正确理解这个概念!你的回答对我帮助很大。现在我明白了。谢谢你的回答,但我不想对我的应用程序中的所有代码取消此规则。是否有方法仅对一个类禁止此规则?@feorex:IIRC您可以为任何特定方法定义SupersMessage属性