Как отфильтровать выходные данные компилятора Delphi 2010 (подсказки)?
Я пытаюсь избавиться от некоторых подсказок (*), которые испускает компилятор Delphi. Просматривая ToolsAPI, я вижу IOTAToolsFilter, который выглядит так, как будто он может помочь мне сделать это через Notifier, но я не уверен, как вызвать это (через какие xxxServices я могу получить доступ к фильтру).
Может кто-нибудь сказать мне, если я на правильном пути здесь? Спасибо!
(*) В частности, H2365 о переопределенных методах, не соответствующих регистру родителя. Не очень хорошо, когда у вас есть около 5 миллионов строк активного кода с немного другим соглашением о коде, чем Embarcadero. Мы работаем без подсказок уже несколько месяцев, и мы вроде как скучаем. :-)
2 ответа
Даже если вы могли бы запросить BorlandIDEServices для IOTAToolsFilter, этот интерфейс не поможет вам сделать то, что вы просите. Этот интерфейс был представлен как часть механизма добавления дополнительных инструментов сборки (компиляторов и т. Д.) В IDE (до того, как IDE использовала MSBuild). Это позволило вам написать собственный "фильтр" для обработки выходных данных конкретного инструмента сборки, но не позволило применить фильтр к одному из встроенных инструментов (например, к компилятору delphi).
Причина Supports(BorlandIDEServices, IOTAToolsFilter, OTAToolsFilter)
Ошибка вызова в Delphi2010 состоит в том, что после добавления поддержки MSBuild в IDE старый способ добавления инструментов сборки в IDE был отключен, и интерфейс BorlandIDEServices больше не поддерживал IOTAToolsFilter.
Объявление IOTAToolsFilter, вероятно, должно быть помечено как устаревшее в ToolsAPI.pas (или, по крайней мере, оно должно быть упомянуто в комментарии исходного кода, что оно больше не поддерживается).
Что касается вашего желания отфильтровать конкретную подсказку, я не знаю, как это сделать с помощью ToolsAPI. Это кажется разумной вещью, которую можно добавить в IOTAMessageServices (возможность перечислять, фильтровать и, возможно, изменять сообщения в представлении сообщений среды IDE). Я бы сделал запрос в QualityCentral для этого.
Также, пожалуйста, проголосуйте за QC# 35774 ( http://qc.embarcadero.com/wc/qcmain.aspx?d=35774), так как если бы это было реализовано, вам не нужно использовать ToolsAPI для такого рода вещей.
В соответствии с http://docwiki.embarcadero.com/RADStudio/en/Obtaining_Tools_API_Services должна быть возможность доступа к нему напрямую с помощью BorlandIDEServices, например:
var
OTAToolsFilter: IOTAToolsFilter;
begin
if Supports(BorlandIDEServices, IOTAToolsFilter, OTAToolsFilter) then
ShowMessage('supports IOTAToolsFilter')
else
ShowMessage('IOTAToolsFilter NOT supported');
end;
Однако это не возвращает требуемый интерфейс в Delphi 2010 (вы получите сообщение не поддерживается), поэтому в документации либо ошибка, либо ошибка в BorlandIDEServices, которая не возвращает правильный интерфейс.