подавите предупреждение для сгенерированного кода c#

Я включил "Предупреждения обработки как ошибки" для моего проекта VS, которые означают, что я получаю ошибки для недостающей документации (хорошее напоминание для этого конкретного проекта).

Однако часть кода сгенерирована инструментом пользователя, который не вставляет xml документацию, таким образом, я ищу далеко для игнорирования пропавших без вести xml документация для сгенерированного кода только, не для всего проекта. Я не имею никакого влияния на фактический сгенерированный файл и ничего не могу действительно вставить в файл (поскольку он часто повторно создается инструментом), так я ищущий что-то существующее вне сгенерированного файла (классы, которые сгенерированы, неравнодушны, если это помогает),

20
задан Cœur 29 July 2017 в 07:51
поделиться

3 ответа

РЕДАКТИРОВАТЬ: См. Комментарии, указывающие, что этот не работает с C # 4. Я не понимаю, работало ли оно в более ранних версиях. компилятора. Однако спецификация C # 4 делает это довольно ясным. В разделе 2.5.8.1 говорится:

Директива #pragma warning restore восстанавливает все или заданный набор предупреждений до состояния, которое было в начале модуля компиляции. Обратите внимание, что если конкретное предупреждение было отключено извне, #pragma warning restore (для всех или для указанного предупреждения) не будет повторно включать это предупреждение.

Джефф предлагает обходной путь в сообщении в блоге - в основном для повторной обработки автоматически сгенерированного кода как части сборки.


Как говорит Том, вы можете добавить «игнорировать» ко всему проекту (Build / Suppress Warnings - введите 1591 в качестве номера предупреждения), но затем вы можете восстановить предупреждение самостоятельно в верхней части каждый из ваших несгенерированных файлов:

#pragma warning restore 1591

Это довольно некрасиво, но работает (я только что протестировал).

9
ответ дан 30 November 2019 в 01:10
поделиться

Лучший способ избежать появления предупреждений или ошибок анализа кода на сгенерированный код должен украсить ваши сгенерированные классы атрибутом GeneratedCodeAttribute и сделать конец файла кода шаблоном *. generated.cs .

Если у ваших файлов кода также есть заголовок файла, у вас должны быть следующие теги:

//----------------------
// <auto-generated>
//     Tool description
// </auto-generated>
//----------------------

Это не обязательно, но если у вас есть заголовок файла кода, это хорошая практика.

Таким образом, FxCop и другие инструменты, такие как StyleCop, больше не будут анализировать ваш код.

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


РЕДАКТИРОВАТЬ: Являются ли сгенерированные классы частичными и часто ли меняются имена и номера фактических классов? Поскольку, если сгенерированное содержимое кода не сильно перемещается, вы можете просто создать другой файл кода и просто объявить сгенерированный частичный класс, чтобы украсить их атрибутом GeneratedCodeAttribute. Один раз это спасло мне жизнь (и мое время!).

9
ответ дан 30 November 2019 в 01:10
поделиться

Лучшее, что вы можете сделать в этом случае, - это подавить конкретное предупреждение в проекте, который содержит сгенерированный код. Вы можете сделать это в Project Properties на вкладке Build. Это не идеально, но это лучшее, что вы можете сделать, если не учитывать прагмы в сгенерированном коде.

2
ответ дан 30 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: