5

我正在尝试禁止特定属性的以下 StyleCop 消息:

SA1513: Statements or elements wrapped in curly brackets must be followed by a blank line.

我正在尝试执行以下操作,但它似乎不起作用:

    [SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]
    public string CustomerId
    {
        get
        {
            return this.GetProperty(CustomerIdProperty);
        }
        set
        {
            if (this.IsNew)
            {
                this.SetProperty(CustomerIdProperty, value);
            }
            else
            {
                throw new ReadOnlyException("Id value can only be changed for a new record.");
            }
        }
    }

我只是做错了什么吗?或者这是不可能的?这是一个很好的规则,只是对我的财产无效。

更新

尝试从 DocumentationRules 切换到 LayoutRules ...仍然没有抑制。

    [DataObjectField(true, false)]
    [SuppressMessage("Microsoft.StyleCop.CSharp.LayoutRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]
    public string CustomerId
    {
        get
        {
            return this.GetProperty(CustomerIdProperty);
        }
        set
        {
            if (this.IsNew)
            {
                this.SetProperty(CustomerIdProperty, value);
            }
            else
            {
                throw new ReadOnlyException("Id value can only be changed for a new record.");
            }
        }
    }
4

6 回答 6

3

您的压制使用Microsoft.StyleCop.CSharp.DocumentationRules. 我认为应该是Microsoft.StyleCop.CSharp.LayoutRules

于 2010-04-10T15:49:24.427 回答
3

我认为这可能是 StyleCop 的问题。你安装的是哪个版本?该页面指出:

从 StyleCop 4.3.2 开始,可以通过在源代码中添加抑制属性来抑制违反规则的报告。

我刚刚发现我无法抑制任何消息。我使用的安装程序只给出了 4.3 的版本。Codeplex上的最新版本是 4.4.0.0。确保您已安装该版本。

更新

我一直在做一些检查,我可以抑制 DocumentationRules:

    [SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules",
                     "SA1600:ElementsMustBeDocumented",
                     Justification = "Reviewed. Suppression is OK here.")]

但不是 SpacingRules 或 LayoutRules。但是,我没有发现任何东西表明为什么会这样。

于 2010-04-10T16:09:30.457 回答
3
[SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]

在最新的 StyleCop 中工作。刚刚删除了“微软”。字首。

于 2015-04-28T10:15:11.310 回答
2

StyleCop 中有一个错误,让您只能禁止某些类型的规则。这将在即将发布的 StyleCop 4.4 中修复。

于 2010-04-11T01:34:30.803 回答
2

请仔细阅读 StyleCop 文档以了解如何抑制规则。以下在我的代码中起作用:

    [SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules",
    "SA1402:FileMayOnlyContainASingleClass",
    Justification = "Splitting this file into classes would get too confusing.")]

从帮助文件:

SuppressMessage 属性具有以下格式:

[SuppressMessage("规则类别, "规则 ID", "理由")]

在哪里:

  • 规则类别- 定义规则的 StyleCop 规则命名空间。例如,Microsoft.StyleCop.CSharp.DocumentationRules

  • Rule Id - 规则的标识符,使用格式 shortname:longname。

    例如,SA1600:ElementsMustBeDocumented

  • 理由- 用于记录禁止消息的原因的文本。

如前所述,请确保您引用了正确的规则命名空间。

于 2011-02-18T01:17:02.050 回答
-2

只需在 get 块和 set 块之间放置一个空行。
这就是你所要做的,添加一个空行,问题就解决了。

于 2010-08-06T16:45:57.310 回答