Подтвердить что ты не робот

Распечатайте сообщение на выходе сборки (это не предупреждение)

Во время сборки я хотел бы иметь возможность печатать сообщение в окне вывода сборки, не будучи классифицированным как предупреждение. То есть В списке ошибок Visual Studio я бы хотел, чтобы он отображался только в том случае, если включен фильтр "Сообщения".

Итак, я хочу, чтобы идентичная функциональность #warning Warning Message Но я не хочу, чтобы это было классифицировано как предупреждение.

Контекст:

У меня много проектов, которые в настоящее время генерируют много предупреждений. Первое, что я хотел бы сделать, - это предотвратить появление предупреждений new. Итак, я:

  • Включено "Предупреждения как ошибки"
  • Прошли и использовали #pragma warning disable/restore для устранения существующих предупреждений.

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

В идеале я бы сделал что-то вроде этого:

#pragma warning disable 0618
#message Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

Я открыт для других подходов к решению проблемы.

4b9b3361

Ответ 1

В соответствии с MSDN вы не можете расширить #pragma: http://msdn.microsoft.com/en-us/library/x74w198a.aspx

Но если ErrorList не является строгим требованием, вы можете обойти это: вы можете использовать комментарии, чтобы выделить важные для вас вещи. Если вы добавите специальный токен в начале вашего комментария, вы сможете отследить его в окне TaskList.
Итак, ваш код будет выглядеть так:

#pragma warning disable 0618
//TODO: Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

И после этого, если вы откроете View → Список задач → выберите "Комментарии" в раскрывающемся списке, вы увидите свой комментарий там. Существует 3 предопределенных жетона: TODO, HACK и UNDONE - и вы можете добавить свое собственное, как MESSAGE, и изменить его приоритет, чтобы ваш код выглядел так, как вы ожидали:

#pragma warning disable 0618
//MESSAGE: Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

Подробнее о токенах вы найдете здесь: http://msdn.microsoft.com/en-us/library/zce12xx2 (v = vs .100).aspx

Стоит упомянуть, что если вы используете Resharper, у него есть еще один инструмент для TODO. Я найду его здесь: ReSharper → Tools → To-do Items

Ответ 2

Если вы используете версию Premium или Ultimate Visual Studio, она имеет функцию анализа кода с использованием набора правил.

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

Вы можете настроить предупреждение, которое будет игнорироваться или рассматриваться как ошибка. Вы можете использовать установленные наборы наборов правил Microsoft или, альтернативно, вы можете создать собственный набор правил в соответствии с вашими требованиями (что не очень сложно и работает для моего требования).

Чтобы включить анализ кода для управляемого кода:

  • Выберите проект в обозревателе решений.
  • В меню "Проект" выберите "Свойства".
  • Выберите Анализ кода.
  • Выберите "Включить анализ кода на сборке" (определяет константу CODE_ANALYSIS).

Подробнее о настройке анализа кода см. по адресу: http://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/

Для создания пользовательских правил:

http://msdn.microsoft.com/en-us/library/dd264974.aspx

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

Для изучения правил и анализа кода:

http://msdn.microsoft.com/en-us/library/dd264996.aspx

Ответ 3

Вы должны посмотреть на параметр csc task WarningsNotAsErrors. Когда список "приемлемых" предупреждений указывается для этого параметра с помощью параметра "Обработать", "Адреса" = "Истина", вы должны регистрировать свои существующие предупреждения, в то время как новые будут отображаться как ошибки.

Конечно, это не совсем существующее против новых предупреждений, а способ работать с точными номерами предупреждений, которые вам удобны при выходе.

Но мое первое предложение состояло в том, чтобы просто исправить это. Когда-то скрытые вне сборки они редко обращаются.