.net 如何在生成的代码中禁用特定的FxCop规则?

.net 如何在生成的代码中禁用特定的FxCop规则?,.net,fxcop,.net,Fxcop,我遇到了一个问题,需要为生成的代码禁用某个规则(在本例中为CA1819:PropertiesShouldNotReturnArray)。如果它是我自己的代码,我会在给定的函数中添加一个SuppressMessage属性,就是这样。显然,我不能在生成的代码中这样做,因为它将在下一次构建中丢失 自动生成的代码: [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.SerializableAttr

我遇到了一个问题,需要为生成的代码禁用某个规则(在本例中为CA1819:PropertiesShouldNotReturnArray)。如果它是我自己的代码,我会在给定的函数中添加一个
SuppressMessage
属性,就是这样。显然,我不能在生成的代码中这样做,因为它将在下一次构建中丢失

自动生成的代码:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class ListViewTable {

    private ListViewTableRow[] itemsField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Row", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public ListViewTableRow[] Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
        }
    }
}

为了解决这个问题,可以使用模块级抑制。在项目的任何其他源文件中,可以使用以下语句(必须在using指令之后):


困难在于为目标找到正确的名称,因为它必须是完全限定的字符串。幸运的是,FxCop gui提供了生成正确消息的帮助:只需右键单击错误,选择“复制为”,然后选择“模块级抑制”

要解决此问题,可以使用模块级抑制。在项目的任何其他源文件中,可以使用以下语句(必须在using指令之后):


困难在于为目标找到正确的名称,因为它必须是完全限定的字符串。幸运的是,FxCop gui提供了生成正确消息的帮助:只需右键单击错误,选择“复制为”并从gui中选择“模块级抑制”

您还可以选择“抑制消息”并选择“在抑制文件中”(而不是“在源代码中”)为了同样的效果,当我在CodeAnalysis窗口中右键单击消息时,我有这个选项。但我没有那个“复制到”,只是一个“复制”,奇怪。你可能使用旧的FxCop插件而不是现在内置的代码分析吗?我没有内置的工具,它是一个单独的GUI。此代码是单独下载还是仅适用于VS2012?我目前仍在使用VS2010。它在VS2010中,但您需要高级或更高版本。好的,我只有专业版。我将不得不按照看起来像是手动的方式进行:-(从GUI中,您也可以选择“抑制消息”并选择“在抑制文件中”(而不是“在源代码中”)以获得相同的效果。当我右键单击CodeAnalysis窗口中的消息时,我有这个选项。但我没有“复制到”,只有一个“复制”,奇怪。你可能使用旧的FxCop插件而不是现在内置的代码分析吗?我没有内置的工具,它是一个单独的GUI。这个代码分析是一个单独的下载,还是只适用于VS2012?我目前仍在使用VS2010。它在VS2010中,但你需要高级或更高版本。好的,我有专业的“仅”.我必须按照看起来的手动方式进行:-(
 <Message TypeName="PropertiesShouldNotReturnArrays" Category="Microsoft.Performance" CheckId="CA1819" Status="Active" Created="2013-10-29 14:47:04Z" FixCategory="Breaking">
         <Issue Certainty="50" Level="Warning" Path="D:\Projects\FlightPlanning\src\Core\FpesCustomControls" File="AoiSchema.cs" Line="32">Change 'ListViewTable.Items' to return a collection or make it a method.</Issue>
        </Message>
[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Justification = "Generated code",
Scope = "member", Target = "FlightPlanning.AoiSchema.ListViewTable.#Items")]