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

Мы используем FastReport для генерации отчетов. Действительно, мы платим за доступ к исходному коду.

В настоящее время мы используем последнюю стабильную версию FastReport. И хотя он достаточно стабилен для нашего производства, всякий раз, когда я компилирую, я вижу это:

[dcc32 Hint] fs_iinirtti.pas(369): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list
[dcc32 Hint] fs_iclassesrtti.pas(656): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list
[dcc32 Hint] fs_iclassesrtti.pas(1014): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list
[dcc32 Hint] fs_idialogsrtti.pas(159): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list
[dcc32 Hint] fs_igraphicsrtti.pas(252): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list
[dcc32 Hint] fs_iformsrtti.pas(429): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list

Я не фанат подсказок, тем более предупреждений в моем коде. Сейчас, конечно, подсказка H2443, возможно, не самая тревожная из подсказок, но я все же хотел бы от нее избавиться.

К счастью, если бы это был наш собственный код, исправить H2443 тривиально (просто добавьте ссылку, которую он запрашивает). Но даже при том, что у нас есть доступ к стороннему исходному коду в этом сценарии, кажется неуместным внезапно изменять его.

Поэтому я задаюсь вопросом: стоит ли ждать, пока разработчики FastReport выпустят новую версию без ошибки, или я должен сам исправить ее, а затем просто перезаписать мою копию исходных файлов при выпуске новой версии?

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

(Справедливости ради, я должен отметить, что раньше было больше подсказок в предыдущих версиях, поэтому, по крайней мере, есть шаги в правильном направлении.)

3 ответа

Решение

Это распространенная ошибка, которую я часто вижу среди разработчиков Delphi (а также многие сторонние поставщики делают это неправильно). Почему вы компилируете стороннюю библиотеку каждый раз, когда создаете свой проект?

Используйте DCU. Отделите их от источника и укажите путь вашей библиотеки к каталогу, в котором находятся DCU. Это не только ускоряет процесс сборки (поскольку он не компилирует сторонние источники снова, но использует DCU), но и не заполняет ваш проект сообщениями из сторонних библиотек.

Если вы хотите войти в источник этих компонентов (вы часто этого не хотите из моего опыта), вы можете добавить источники в путь просмотра и даже сделать отладку и выпустить DCU, которые вы используете.

Вот что я делаю:

Сторонние библиотеки получают собственный репозиторий контроля версий локально. Если они с открытым исходным кодом, я пытаюсь клонировать вышестоящий репозиторий. Если нет, то каждая новая версия является новым коммитом в ветке поставщика. Любые подсказки / предупреждения / ошибки, которые я исправляю, передаются в другую ветку и отправляются поставщику. Если они примут решение, отлично! Если нет, то у меня все еще есть патчи, и новые апстрим-версии просто сливаются в мою собственную ветку.

Есть два основных подхода, которые вы можете использовать.

  1. Если вы готовы изменить исходный код, сделайте это. Вместо того, чтобы решать проблему, которая приводит к предупреждению / подсказке, просто отключите предупреждение / подсказку. Это наименее инвазивный способ решения проблемы. Скорее всего, сторонняя библиотека поставляется с включаемым файлом. Вы можете добавить директивы к этому включаемому файлу для подавления предупреждений / подсказок. Используйте контроль версий, чтобы упростить повторное применение этих модификаций каждый раз при получении новой версии стороннего кода.

  2. Если вы не можете или не хотите изменять исходный код, вы можете обратиться к разработчикам с просьбой разрешить проблему.

Другие вопросы по тегам