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来抑制 类的整个范围或命名空间的整个范围
您可以使用一组规则创建代码分析规则文件,如:
请参阅逐步演练: