tags:

views:

486

answers:

4

I am trying to suppress the following StyleCop message for a specific property:

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

I am trying to do the following, but it doesn't seem to work:

    [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.");
            }
        }
    }

Am I just doing something wrong? Or is this just not possible? It's a good rule, just not valid in my case for a property.

Update

Tried switching from DocumentationRules to LayoutRules ... still not suppressing.

    [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.");
            }
        }
    }
+1  A: 

Your suppression uses Microsoft.StyleCop.CSharp.DocumentationRules. I think it should be Microsoft.StyleCop.CSharp.LayoutRules.

klausbyskov
That makes sense ... made the change but still not suppressing.
mattruma
+1  A: 

I think this might be a problem with StyleCop. Which version do you have installed? This page states that:

Starting with StyleCop 4.3.2, it is possible to suppress the reporting of rule violations by adding suppression attributes within the source code.

I've just found that I can't suppress any messages. The installer I used just gives the version as 4.3. The latest version on the Codeplex is 4.4.0.0. Make sure you have that version installed.

Update

I've been doing some checking and I can suppress DocumentationRules:

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

but not SpacingRules or LayoutRules. However, nothing I've found indicates why this should be the case.

ChrisF
I think it might be a bug ... trying to suppress that message still gives the warning.
mattruma
@mattruma - I think in this case the rule name is correct
ChrisF
+1  A: 

There is a bug in StyleCop that let's you only suppress certain kinds of rules. This will be fixed in StyleCop 4.4, which is due to be released soon.

Jason Allor
+1  A: 

Just put a blank line between your get block and your set block.
That's all you have to do, add one blank line and the problem is solved.

Task