2013-02-13 4 views
1

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

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

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

В свойствах моего проекта, на вкладке Code Analysis, я проверил вариант для

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

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

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

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

Edit: Следующий заголовок также можно найти в сгенерированном коде:

//------------------------------------------------------------------------------ 
// <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> 
//------------------------------------------------------------------------------ 

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

Я также нашел, что это question и попытался использовать следующее в моих 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: Добавить 'частный вакуум OnDeserialized (StreamingContext)' метод для ввода ... и приписывать ему с System.Runtime.Serialization.OnDeserializedAttribute.

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

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

Редактировать 3: У меня есть настройка стиля/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.

+0

Не могли бы вы подробно сообщить, какие ошибки вы видите? – Mightymuke

+0

@Mightmuke, см. Edit 2 – DevDave

+0

Кажется, что это отлично работает для меня, когда я выбираю параметр «Подавить результаты сгенерированного кода» (хотя у меня нет этого текста в скобках, мне интересно, как и почему это там) , Вы запускаете это из IDE (aka Code Analysis) или из бегуна FxCop? Если из IDE у вас есть несколько проектов? При запуске из среды IDE возникает проблема в том, что параметры анализа кода из первого проекта переопределяют параметры для проекта «под» (по крайней мере, в VS2010). Это, конечно, не проблема, если у вас есть только один проект. – Mightymuke

ответ

4

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

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

+0

Невозможно ли пропустить сгенерированный файл с помощью FxCop вместо необходимости записывать подавления для каждой ошибки? – DevDave

+0

Если вы уже установили FxCop для игнорирования сгенерированного кода, то вы в значительной степени сделали все возможное с этой целью. Я не могу воспроизвести проблему, но я не могу сказать, связано ли это с тем, что мой номер службы отличается от вашей конфигурации FxCop. Как вы запускаете FxCop, когда видите предупреждения CA? –

+0

Есть ли другой способ игнорировать сгенерированный код для fxCop, чем примеры, которые я включил? – DevDave