Как заставить компилятор Delphi отображать все подсказки и предупреждения - PullRequest
9 голосов
/ 11 июня 2009

Есть ли способ заставить компилятор Delphi постоянно отображать все подсказки и предупреждения?

Вот поведение, которое я сейчас наблюдаю в Delphi 6:

  1. Проверьте свежую копию моего приложения из системы контроля версий
  2. Открыть проект в Delphi и скомпилировать
  3. Отображаются все подсказки и предупреждения для проекта
  4. Внести изменения в одну единицу
  5. Compile
  6. Отображаются только подсказки и предупреждения для измененного устройства

Итак, я подумал, что, может быть, смогу обмануть Delphi, удалив все файлы dcu, чтобы заставить его перекомпилировать все. Неудачно. Компилятор фактически перекомпилирует все модули, но не отображает подсказки и предупреждения для этих модулей.

РЕДАКТИРОВАТЬ: Выполнение полной сборки (Проект> Сборка) приводит к тем же печальным результатам.

НОВАЯ ИНФОРМАЦИЯ: Если я изменю модуль и затем скомпилирую, я получу предупреждения Однако, если я изменяю модуль, а затем строю, я не получаю предупреждения. Я думаю, это указывает на то, что предупреждения где-то отключены. Возможно в сторонней библиотеке?

Кажется, должен быть способ попросить Delphi повторно отобразить все эти подсказки и предупреждения, которые не требуют, чтобы я извлекал свежую копию из системы контроля версий или изменял каждую единицу по одному.

Ответы [ 5 ]

7 голосов
/ 11 июня 2009

Подсказки и предупреждения генерируются компилятором. Он будет сообщать только о единицах, которые он скомпилировал. Команда «compile» будет компилировать только те файлы, которые изменились . Для принудительной перекомпиляции всех юнитов, используемых вашим проектом, используйте команду Build .

Более поздние версии назначают сочетание клавиш (Shift + F9) для команды «Сборка».

Чтобы получить это сочетание клавиш в Delphi 6, установите эту утилиту , которую я использовал с большим успехом в Delphi 5.

3 голосов
/ 27 июля 2010

У меня была та же проблема, и наконец я нашел решение ... Поиск строк $ WARNINGS OFF и $ HINTS OFF, и не только из файлов * .pas, но и из всех файлов. У меня была такая странная идея в стороннем файле .inc:

{$ IFDEF DEBUG} {$ WARNINGS ON} {$ HINTS ON} {$ ELSE} {$ WARNINGS OFF} {$ HINTS OFF} {$ ENDIF}

3 голосов
/ 11 июня 2009

Я бы проверил, выключили ли вы предупреждения в некоторых из ваших юнитов.
В зависимости от последнего изменения в единицах, порядок компиляции может меняться. В некоторых случаях предупреждения могут оставаться отключенными для модуля, который компилируется через некоторое время, когда он был недавно извлечен из системы контроля версий, он был скомпилирован ранее с предупреждениями.
Обратите особое внимание на любой файл Include, который вы можете использовать.

2 голосов
/ 11 июня 2009

Если вы используете dcc32.exe, все предупреждения будут отображаться всегда. (Это еще одна причина, по которой я использую сценарии сборки для всех своих проектов.)

0 голосов
/ 11 июня 2009

Я все еще использую D6 для некоторых проектов, и если я делаю полную сборку, тогда все подсказки и предупреждения отображаются / повторно отображаются. Для проверки синтаксиса или компиляции отображаются только измененные сообщения модуля.

У вас есть что-то еще не так или повреждено где-то. Попробуйте удалить проект .dsm и файлы .dof (они будут перестроены). Файл .dof содержит флаги предупреждений и подсказок.

...