В 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
обрабатывается как ошибка и останавливает компиляцию.