Как отфильтровать вывод компилятора Delphi 2010 (подсказки)? - PullRequest
2 голосов
/ 08 июня 2010

Я пытаюсь избавиться от некоторых подсказок (*), которые испускает компилятор Delphi. Просматривая ToolsAPI , я вижу IOTAToolsFilter , который выглядит так, как будто он может помочь мне сделать это через Notifier, но я не уверен, как вызвать это (через какие xxxServices я могу получить доступ фильтр).

Может кто-нибудь сказать мне, нахожусь ли я на правильном пути здесь? Спасибо!

(*) В частности, H2365 о переопределенных методах, не соответствующих регистру родителя. Не очень хорошо, когда у вас есть около 5 миллионов строк активного кода с немного другим соглашением о кодировке, чем Embarcadero. Мы работаем без подсказок уже несколько месяцев, и мы вроде как скучаем. : -)

Ответы [ 2 ]

4 голосов
/ 11 июня 2010

Даже если вы могли бы запросить 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 для такого рода вещей.

1 голос
/ 08 июня 2010

Согласно 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, не возвращающая правильный интерфейс.

...