如何处理第三方库中的警告/提示?

时间:2014-04-07 13:38:07

标签: delphi fastreport

我们使用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 个答案:

答案 0 :(得分:9)

这是我经常在Delphi开发人员中看到的常见错误(也有许多第三方供应商做错了)。 为什么每次构建项目时都要编译第三方库?

使用DCU。将它们与源分开,并将库路径指向包含DCU的目录。这不仅加快了您的构建过程(因为它不会再次编译第三方源,而是使用DCU),它也不会使您的项目充斥着来自第三方库的消息。

如果您想要进入这些组件的源代码(您通常不希望根据我的经验),您可以将源添加到浏览路径,甚至可以调试和释放您正在使用的DCU。

答案 1 :(得分:5)

这就是我的所作所为:

第三方图书馆在本地获取自己的源控制存储库。如果他们是开源的,我会尝试克隆上游存储库。如果没有,则每个新版本都是供应商分支中的新提交。我修复的任何提示/警告/错误都会被提交到不同的分支并发送给供应商。如果他们接受修复,那太好了!如果没有,那么我自己仍然有补丁,新的上游版本只是合并到我自己的分支。

答案 2 :(得分:2)

您基本上可以采取两种方法。

  1. 如果您准备更改源代码,请执行此操作。而不是解决导致警告/提示的问题,只需禁用警告/提示。这是解决问题的最不具侵入性的方法。很可能第三方库将附带一个包含文件。您可以向该包含文件添加指令以禁止显示警告/提示。每次提交新版本的第三方代码时,都可以使用修订控制来轻松地重新应用这些修改。

  2. 如果您不能或不想更改源代码,您唯一的选择就是请求开发人员解决问题。