Stylecop Подавить ошибки для файла Reference.cs

Я только что задал аналогичный вопрос относительно автоматически сгенерированного кода из Service References и Xml summary errors. Был опубликован ответ, в котором говорилось, что я могу добавить Service Reference в свой собственный проект, и тогда он сможет полностью избежать Xml сводных предупреждений и Stylecop ошибок.

Но я понял, что смог обойти проблему Xml, установив Service Reference на Internal, и теперь застрял на ошибках StyleCop.

Я использую FxCop версии 10.0.

В свойствах моего проекта на вкладке Анализ кода я проверил параметр для

Подавить результаты сгенерированного кода (только управляемые)

Кроме того, глядя на сгенерированный код в файле Reference.cs, я вижу, что код украшен следующим атрибутом:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]

..какой Stylecop следует пропустить, верно? Хотя это не работает, я все еще получаю ошибки StyleCop для сгенерированного кода.

Изменить. В сгенерированном коде также можно найти следующий заголовок:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18033
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

Так почему его не игнорируют?

Я также нашел этот вопрос и попытался использовать следующее в моих StyleCop настройках :

<CollectionProperty Name="GeneratedFileFilters">
    <Value>Reference\.cs$</Value>
 </CollectionProperty>

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

Reference.cs
\Reference\.cs
\Reference\.cs$
Reference\.cs$

Кто-нибудь знает, как подавить все ошибки Stylecop для файла Reference.cs?

Edit2: ошибки, отображаемые для файла Reference.cs:

Ошибка 1 CA1812: Microsoft.Performance: ... — это внутренний класс, который, по-видимому, никогда не создается. Если это так, удалите код из сборки. Если этот класс предназначен для содержания только статических методов, рассмотрите возможность добавления закрытого конструктора, чтобы предотвратить создание компилятором конструктора по умолчанию.

Ошибка 2 CA2239: Microsoft.Usage: добавьте метод "private void OnDeserialized(StreamingContext)" для ввода... и присвойте ему атрибут System.Runtime.Serialization.OnDeserializedAttribute.

Ошибка 4 CA1811: Microsoft.Performance: ..., похоже, не имеет восходящих общедоступных или защищенных вызывающих объектов.

У меня 27 из этих 3 типов ошибок.

Редактировать 3: у меня есть настройка Style/Fx cop для запуска на сборке. Я добавил CODE_ANALYSIS в символы условной компиляции на вкладке сборки и

"$(ProgramFiles)\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /ruleid:-"Microsoft.Design#CA1006" /ruleid:-"Microsoft.Design#CA1020" /console /cul:en-GB /q /assemblyCompareMode:StrongNameIgnoringVersion

... в Post-build event command line на вкладке Build Events.


person DevDave    schedule 13.02.2013    source источник
comment
Не могли бы вы подробно описать, какие ошибки вы видите?   -  person Mightymuke    schedule 15.02.2013
comment
@Mightmuke, см. редактирование 2   -  person DevDave    schedule 15.02.2013
comment
Кажется, у меня все работает нормально, когда я выбираю опцию Suppress results from generated code (хотя у меня нет этого текста в скобках, мне интересно, как и почему он там). Вы запускаете это из IDE (он же анализ кода) или из бегуна FxCop? Если из IDE, у вас несколько проектов? При запуске из среды IDE возникает проблема, заключающаяся в том, что параметры анализа кода из первого проекта переопределяют параметры «дочернего» проекта (по крайней мере, в VS2010). Это, конечно, не будет проблемой, если у вас есть только один проект.   -  person Mightymuke    schedule 15.02.2013


Ответы (1)


Ошибки CAxxxx исходят от FxCop, а не от StyleCop. Если они появляются для сгенерированного кода, и вы хотите сохранить сгенерированный код без изменения генератора, просто добавьте исключения на уровне проекта (например, в GlobalSuppressions.cs).

Следующее редактирование вопроса № 3: Поскольку вы запускаете fxcopcmd.exe "вручную", настройка вашего проекта C# для игнорирования сгенерированного кода вообще не используется. Вам нужно будет добавить переключатель /ignoregeneratedcode в командную строку fxcopcmd.exe, чтобы применить это.

person Nicole Calinoiu    schedule 15.02.2013
comment
Нет ли способа пропустить сгенерированный файл с помощью FxCop, вместо того, чтобы писать подавления для каждой ошибки? - person DevDave; 15.02.2013
comment
Если вы уже настроили FxCop на игнорирование сгенерированного кода, то вы практически сделали все, что могли с этой стороны. Я не могу воспроизвести проблему, но я не могу сказать, связано ли это с тем, что мой сервисный номер отличается, или ваша конфигурация FxCop неверна. Как вы запускаете FxCop, когда видите предупреждения CA? - person Nicole Calinoiu; 15.02.2013
comment
Есть ли другой способ игнорировать сгенерированный код для fxCop, отличный от примеров, которые я включил? - person DevDave; 15.02.2013
comment
Это зависит от того, как вы используете FxCop. Если бы вы ответили на вопрос о том, как вы его запускаете, было бы очень важно указать, достаточно ли установить параметр в VStudio. - person Nicole Calinoiu; 15.02.2013