2008-12-09 2 views
21

Можно ли исключить полное пространство имен из всего анализа FxCop, продолжая анализировать остальную часть сборки, используя SuppressMessageAttribute?Исключить полное пространство имен из анализа кода FxCop?

В моем текущем случае у меня есть группа классов, сгенерированных LINQ to SQL, которые вызывают много проблем FxCop, и, очевидно, я не буду изменять все те, которые соответствуют стандартам FxCop, поскольку многие из этих изменений будут если я снова сгенерировал классы.

Я знаю, что у FxCop есть опция проекта для подавления анализа сгенерированного кода, но, похоже, он не распознает классы сущности и контекста, созданные LINQ 2 SQL, как сгенерированный код.

+0

Это точный дубликат, потому что другой вопрос также задает вопрос о Linq-to-SQL; но я думаю, что ответы должны быть объединены, а заглушка поддерживается для поиска. – 2010-09-01 14:37:08

ответ

17

Если вы помечать классы с атрибутом [GeneratedCode], вы можете использовать флаг/ignoregeneratedcode с FxCop, как описано в этой статье MSDN:

FAQ: How do I prevent FxCop from firing warnings against generated code

Вы, возможно, чтобы добавить новый файл кода и реализовать новые частичные классы там, чтобы добавить атрибут к классам:

[GeneratedCode] 
public partial class MainDataContext { } 

Просто убедитесь, что вы добавляете все в правильное пространство имен при создании нового файла.

1

Использование атрибута сгенерированного кода, heres blog post команды Code Analysis по этому вопросу.

Это в верхней части пространства имен следует сделать трюк:

[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] 
+0

К сожалению, нельзя добавлять эти атрибуты в пространства имен, насколько я знаю. Это означало бы, что я должен будет добавить его к каждому сгенерированному классу вручную - это не может быть идеальным решением. : D – hangy 2008-12-09 16:02:24

+4

почти все. Настоящая боль заключается в том, что вам нужно восстановить код по какой-либо причине, по которой вы должны снова отключить атрибут. Если классы Linq to Sql генерируются, это частичные, вы можете сохранить атрибуты вдали от сгенерированного кода. У меня аналогичная проблема с EF classse. – Chane 2008-12-09 17:04:33

1
<Assembly: SuppressMessage("Microsoft.Design", _ 
    "CA1020:AvoidNamespacesWithFewTypes", _ 
    Scope:="namespace", _ 
    Target:="Missico.IO")> 

оператор Put в GlobalSuppressions.vb в корне проекта.

Все, что у меня есть, это пример VB.

+0

Это не работает для многих предупреждений о генерации кода в VS Code Code Analysis: они, похоже, не подавляются на уровне пространства имен. Но есть еще один вариант: http://stackoverflow.com/questions/2221881/code-analysis-on-a-code-generator-generated-file-how-to-suppress-warnings/2739791#2739791 – Richard 2010-04-29 18:29:53

4

Добавить [GeneratedCode] attribute к классам.
EDIT: Я имел в виду частичные классы с одинаковыми именами, как объясняется другим ответом.

Смежные вопросы