Попытка подавить сообщение StyleCop SA1513: ClosingCurlyBracketMustBeFollowedByBlankLine - PullRequest
5 голосов
/ 10 апреля 2010

Я пытаюсь подавить следующее сообщение 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.");
            }
        }
    }

Ответы [ 6 ]

3 голосов
/ 10 апреля 2010

Я думаю, что это может быть проблема с 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. Однако ничто из того, что я нашел, не указывает, почему это так.

3 голосов
/ 10 апреля 2010

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

2 голосов
/ 28 апреля 2015
[SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine", Justification = "There are no issues with this code")]

работает в последней версии StyleCop. Только что убрал "Microsoft". Приставка.

2 голосов
/ 18 февраля 2011

Внимательно прочитайте документацию StyleCop, чтобы понять, как подавить правило.В моем коде работает следующее:

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

Из файла справки:

Атрибут SuppressMessage имеет следующий формат:

[SuppressMessage ("Категория правила, "Идентификатор правила", "Обоснование")]

Где:

  • Категория правила - Пространство имен правила StyleCop, в котором определено правилоНапример, Microsoft.StyleCop.CSharp.DocumentationRules

  • Идентификатор правила -Идентификатор правила с использованием краткого имени в формате: длинное имя.

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

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

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

2 голосов
/ 11 апреля 2010

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

0 голосов
/ 06 августа 2010

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

...