2010-06-08 2 views
2

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

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

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

+0

Сообщите мне, если у вас есть решение :-) –

+0

Вы пытались использовать Refactoring, чтобы исправить имена методов? –

+1

Нет, мы - кучка упрямых разработчиков, и нам очень нравится наш собственный код. Мы гораздо скорее теряем намеки, чем отказываемся от этого. Кроме того, мы склонны использовать много, что ломает Refactoring в забвение ... cygwin заменяет скрипты для победы. : D –

ответ

4

Даже если вы можете запросить BorlandIDEServices для IOTAToolsFilter, этот интерфейс не поможет вам делать то, что вы просите. Этот интерфейс был введен как часть механизма добавления дополнительных средств сборки (компиляторов и т. Д.) В среду IDE (до использования IDE в MSBuild). Это позволило вам написать собственный «фильтр» для обработки вывода из определенного инструмента построения, но это не позволит вам применить фильтр к одному из встроенных инструментов (например, к компилятору delphi).

Причина, по которой отказ в вызове Supports(BorlandIDEServices, IOTAToolsFilter, OTAToolsFilter) в Delphi2010 заключается в том, что после того, как поддержка MSBuild была добавлена ​​в среду IDE, старый способ добавления инструментов сборки в IDE был отключен, а интерфейс BorlandIDEServices больше не поддерживался IOTAToolsFilter.

Объявление IOTAToolsFilter должно быть отмечено в устаревших файлах ToolsAPI.pas (или, как минимум, должно быть указано в комментарии к исходному коду, что он больше не поддерживается).

Что касается вашего желания фильтровать определенный намек, я не знаю, как это сделать с помощью ToolsAPI. Похоже, что это разумная вещь, которую можно добавить в IOTAMessageServices (возможность перечисления, фильтрации и, возможно, изменения сообщений в представлении Message IDE). Я хотел бы ввести запрос в QualityCentral для этого.

Также, пожалуйста, проголосуйте за QC# 35774 (http://qc.embarcadero.com/wc/qcmain.aspx?d=35774), как если бы они были реализованы, вам не нужно будет использовать ToolsAPI для такого рода вещей.

+0

Спасибо, Крис, это проясняет ситуацию. Проголосовали. –

+0

Обратите внимание, что [QualityCentral уже закрыт] (https://community.embarcadero.com/blogs/entry/quality-keeps-moving-forward), поэтому вы больше не можете обращаться к ссылкам 'qc.embarcadero.com' , Если вам нужен доступ к старым данным QC, посмотрите на [QCScraper] (http://www.uweraabe.de/Blog/2017/06/09/how-to-save-qualitycentral/). –

1

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

+0

+1 для указания мне на документы, указывающие, что он действительно является одним из xxxServices. Я мог бы немного поиграть со старыми версиями Delphi, чтобы подтвердить, работал ли этот подход. –

Смежные вопросы