Как обрабатывать предупреждения как ошибки в Delphi 10.2 при установке некоторых предупреждений на False - PullRequest
2 голосов
/ 29 апреля 2020

В Delphi 10.2 есть эта опция для обработки предупреждений как ошибок (Параметры проекта -> Delphi Компилятор -> Подсказки и предупреждения -> Вывод предупреждений). Варианты: True, False и as errors. При значении as errors компилятор будет воспринимать каждое предупреждение как ошибку, что приводит к сбою сборки. Для меня это важно, так как я хочу, чтобы мой сервер сборки не работал при любом предупреждении (я использую конвейер сборки Microsoft Azure DevOps).

Проблема заключается в том, что при установке любого из перечисленных предупреждений на значение не по умолчанию (например, когда я устанавливаю Platform Symbol в False, чтобы игнорировать любые предупреждения символа платформы), настройки as errors больше не работают. Все предупреждения затем выводятся как обычные предупреждения, а не ошибки (за исключением предупреждения Platform Symbol в этом примере, конечно).

Я знаю, что могу использовать директиву $WARN <identifier> OFF, чтобы отключить спецификацию c предупреждение, и это относится к настройке as errors, но эта директива имеет локальную область действия, так что это означает, что я должен добавить ее к каждому юниту, у которого есть это предупреждение. Я скорее использую решение, которое имеет глобальный охват и работает для всего проекта.

Мой вопрос:
Как я могу позволить компилятору обрабатывать предупреждения как ошибки и отключать некоторые предупреждения глобально?

Обновление 1

Предупреждение, которое все еще отображается как предупреждение, когда Output warnings установлено на True, в то время как некоторые предупреждения установлены на False, это W1029 Duplicate constructor ... with identical parameters will be inacessible in C++. В моем случае в коде используются символы платформы c, поэтому я установил для предупреждения Platform Symbols значение False, поскольку я нацеливаюсь только на Windows.

Обновление 2

Чтобы прояснить мою ситуацию: Мой код имеет два предупреждения:

  • Предупреждение символа платформы
  • Дублирующее предупреждение конструктора

Я использую следующее настройки:

  • Platform Symbol предупреждение установлено на False, все остальные имеют значение по умолчанию
  • Output warnings установлено на As errors

Результат:

  • Предупреждение Platform Symbol отключено (как и ожидалось)
  • Предупреждение Duplicate constructor по-прежнему выводится как предупреждение вместо как ошибка.

Когда я устанавливаю Platform Symbol предупреждение True, предупреждение Platform Symbol обрабатывается как ошибка и останавливает компиляцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...