Я только что задал аналогичный вопрос относительно автоматически сгенерированного кода из 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
.
Suppress results from generated code
(хотя у меня нет этого текста в скобках, мне интересно, как и почему он там). Вы запускаете это из IDE (он же анализ кода) или из бегуна FxCop? Если из IDE, у вас несколько проектов? При запуске из среды IDE возникает проблема, заключающаяся в том, что параметры анализа кода из первого проекта переопределяют параметры «дочернего» проекта (по крайней мере, в VS2010). Это, конечно, не будет проблемой, если у вас есть только один проект. - person Mightymuke   schedule 15.02.2013