Проблема с глобальным файлом.asax.cs и правилом StyleCop SA1649

#.net #visual-studio-2010 #stylecop

#.net #visual-studio-2010 #stylecop

Вопрос:

В настоящее время я работаю над проектом, и мы рассматриваем возможность обновления нашего StyleCop с версии 4.3.3 до 4.5

Во время всего этого веселья мы столкнулись с правилом SA1649 — «FileHeaderFileNameDocumentationMustMatchTypeName», которое все хорошо, но вызывает проблемы с глобальными файлами.asax.cs, поскольку файл

 // --------------------------------------------------------------------------------------------------------------------
// <copyright file="Global.asax.cs" company="COMPANY">
//   Copyright (c) COMPANY. All rights are reserved.....
// </copyright>
// <summary>
//   Starting point for back office website.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Foo.Web
{
    /// <summary>
    /// Starting point for back office website.
    /// </summary>
    public class MvcApplication : HttpApplication
    {
        ....
    }
}
  

На него жалуются, потому что имя файла ‘Global.asax.cs’ и класс ‘MvcApplication’ не совпадают. Мы пытались поместить список подавления для ‘Global.asax.cs’ в настройки sylecop, но, похоже, это не сработало. (В настоящее время наша работа заключается в том, чтобы полностью отключить правило, но мы не хотим оставлять это как таковое, нам нужно только исключение для файлов Global.asax.cs.)

Ответ №1:

Используйте подавление на уровне пространства имен:

 [module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", Justification = "Reviewed.")]

namespace MyNamespace
{

}
  

Комментарии:

1. К сожалению, это потребовало бы, чтобы мы делали это для каждого проекта MVC, который не был идеальным. К счастью, нам удалось исправить настройки вручную, чтобы заставить его работать.

Ответ №2:

Обнаружил это, потратив немного времени и манипулируя исходным файлом, сгенерированным инструментом.

 <StyleCopSettings Version="105">
  <Analyzers>
  ... Removed for brevity ...
  </Analyzers>
  <SourceFileList>
        <SourceFile>Global.asax.cs</SourceFile>
        <Settings>
            <Analyzers>
                <Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules">
                    <Rules>
                        <Rule Name="FileHeaderFileNameDocumentationMustMatchTypeName">
                          <RuleSettings>
                            <BooleanProperty Name="Enabled">False</BooleanProperty>
                          </RuleSettings>
                        </Rule>
                    </Rules>
                </Analyzer>
            </Analyzers>
        </Settings>
    </SourceFileList>
</StyleCopSettings>
  

Надеюсь, это поможет кому-либо еще с этой проблемой.

Комментарии:

1. Разочаровывающие 34 RuleSettings года спустя я заставил StyleCop игнорировать все, что SimpleJSON добавлял в мой проект. Спасибо!