Подтвердить что ты не робот

Как подавить ошибку StyleCop SA0102: CSharp.CsParser: синтаксическая ошибка была обнаружена в файле при использовании атрибутов параметров универсального типа

Имея следующий код С# с атрибутом атрибута generic type:

[System.AttributeUsage(System.AttributeTargets.GenericParameter)]
public class GenericParameterAttribute : System.Attribute
{
}
public class GenericClass<[GenericParameter] T>
{
}

При включении интеграции StyleCop (StyleCop.targets импортируется в файл .csproj) StyleCop возвращает ошибку и компиляция завершается с ошибкой:

Ошибка 1 SA0102: CSharp.CsParser: в файле обнаружена синтаксическая ошибка...

Без StyleCop.targets, импортированных в файл .csproj, скомпилированный в порядке.

Окружающая среда

Я не могу найти код SA0102 на сайте документации StyleCop http://www.stylecop.com/docs/StyleCop%20Rules.html - кажется, SA0102 не является правилом StyleCop, возможно, это код внутренней ошибки StyleCop.

Итак, вопрос: как подавить ошибку StyleCop SA0102?

4b9b3361

Ответ 1

Кажется невозможным подавить эту ошибку с помощью такого атрибута:

[SuppressMessage("StyleCopNameSpace", "SA0102:RuleNameHere")] 

Как указано в Post, это сообщение отображается, когда StyleCop обнаруживает внутреннюю ошибку:

jasonall 18 мая 2010 года в 22:00: на самом деле невозможно подавить SA0101 или SA0102. Это специальные правила "случая", которые генерируются, когда StyleCop обнаруживает внутреннюю ошибку. Единственными обходными решениями для вас было бы полное отключение этого файла от анализа или прекращение использования дополнительных параметров до обновления до StyleCop 4.4.

Ответ 2

Найдите файл, который вы хотите исключить из StyleCop в файле .csproj, и добавьте элемент ExcludeFromStyleCop, как показано ниже

<Compile Include="<filename>.cs">
  <ExcludeFromStyleCop>True</ExcludeFromStyleCop>
</Compile>