2010-04-10 3 views
4

Я пытаюсь подавить следующий StyleCop сообщение для конкретного объекта:Попытка подавить StyleCop сообщение SA1513: ClosingCurlyBracketMustBeFollowedByBlankLine

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

Я просто делаю что-то неправильно? Или это просто невозможно? Это хорошее правило, просто недействительное в моем случае для собственности.

Update

Пробовал переход от 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."); 
      } 
     } 
    } 

ответ

3

Я думаю, что это может быть проблемой для StyleCop. Какую версию вы установили? This page утверждает, что:

Начиная с StyleCop 4.3.2, можно подавить отчеты о нарушениях правил путем добавления подавления атрибутов в исходном коде.

Я только что нашел, что я не могу подавить любые сообщения. Установщик, который я использовал, просто дает версию 4.3. Последняя версия на Codeplex составляет 4.4.0.0. Убедитесь, что установлена ​​эта версия.

Update

Я делал некоторые проверки, и я могу подавить DocumentationRules:

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

но не SpacingRules или LayoutRules. Однако ничего, что я нашел, указывает, почему это должно быть так.

+0

Я думаю, что это может быть ошибка ... попытка подавить это сообщение все еще дает предупреждение. – mattruma

+0

@mattruma - Я думаю, что в этом случае правильное имя правильно – ChrisF

+0

Я согласен с оценкой ChrisF - даже в 4.4, SpacingRules и LayoutRules не кажутся подавляемыми. – Joe

3

Ваше подавление использует Microsoft.StyleCop.CSharp.DocumentationRules. Я думаю, что это должно быть Microsoft.StyleCop.CSharp.LayoutRules.

+0

Это имеет смысл ... внесение изменений, но все еще не подавляющее. – mattruma

2

В StyleCop есть ошибка, которая позволяет вам только подавлять определенные правила. Это будет исправлено в StyleCop 4.4, которое должно быть выпущено в ближайшее время.

-1

Просто поместите пустую строку между блоком получения и вашим блоком.
Это все, что вам нужно сделать, добавить одну пустую строку, и проблема решена.

+3

-1 Это сообщение не отвечает на вопрос OP. Он спросил, как отключить это правило, а не как его соблюдать. –

1

Будьте внимательны, прочитав документацию 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

  • Правило Id -The идентификатор для правила, используя формат короткое_имя longname.

    Например, SA1600: ElementsMustBeDocumented

  • Обоснование - Текст, который используется для документирования причины для подавления сообщения.

И, как уже упоминалось, убедитесь, что вы ссылаетесь на пространство имен правильные правила.

1
[SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")] 

работает в последней версии StyleCop. Просто удалил «Microsoft». префикс.