如何强制 Delphi 编译器显示所有提示和警告信息

9
有没有一种方法可以强制Delphi编译器始终显示所有提示和警告?
以下是我在Delphi 6中看到的行为:
1.从源代码控件中检出我的应用程序的新副本 2.在Delphi中打开项目并编译 3.显示项目的所有提示和警告 4.更改一个单元 5.编译 6.只显示更改的单元的提示和警告
因此,我想也许我可以通过删除所有“dcu”文件来欺骗Delphi,以强制它重新编译所有内容。但没有成功。编译器确实重新编译了所有单元,但未显示这些单元的提示和警告。
编辑:执行完整构建(项目>构建)会产生同样不幸的结果。
新信息:如果我修改一个单元然后编译,我会收到警告。但是,如果我修改一个单元然后进行构建,我就不会收到警告。我认为这指向某个地方关闭了警告。可能是在第三方库中?
似乎应该有一种方法可以要求Delphi重新显示所有这些提示和警告,而不需要我从源代码控制中检查出新副本或逐个修改每个单元。

Delphi 1或Delphi 2009,或者介于两者之间的版本?了解这一点会很有帮助... - Roddy
6个回答

7
提示和警告是编译器生成的。它只会报告已编译的单元。 "编译"命令只会编译更改的文件。要强制重新编译项目使用的所有单元,请改用构建命令。

后续版本分配了一个快捷键(Shift + F9)给“构建”命令。

为了在Delphi 6中获得该键盘快捷键,请安装此实用程序,我已经在Delphi 5上使用了一段时间并取得了巨大成功。


如果您手动删除所有的 .DCU 文件,然后进行完整的构建,会发生什么? - JosephStyons
尝试将您的 .DOF 文件重命名为其他名称,例如 MyProject.dof.OLD... 然后让 IDE 重新创建它。然后会发生什么? - JosephStyons
7
完整编译和第二次编译绝不能返回相同的结果,我怀疑你正在编译错误的代码。建议检查路径确保你要编译的代码确实被编译了。 - Nick Hodges
删除dcu文件应该让链接器重新编译所有单元。这很奇怪。按我的经验,IDE跟踪代码的更改并仅编译已更改的单元。如果一个单元在项目中没有已编译的文件,则搜索路径应该进行编译。因此,当您删除所有DCU文件时,您正在重新构建所有内容。 - user114285
我也有同样的经验:对项目进行完整构建,绝对不会显示所有单元中的所有警告。至少在 Delphi 2006 和 2007 中是这样的。除了 RTL 外,所有内容都是从源代码编译的,因此 dcu 仅位于 RTL 搜索路径和 dcu 输出路径(与源路径不同)中。 - dummzeuch
显示剩余9条评论

4

我曾经也遇到过相同的问题,最终找到了解决方案...搜索字符串$WARNINGS OFF和$HINTS OFF,不仅限于*.pas文件,而是所有文件。我在第三方.inc文件中有了这个奇怪的想法:

{$IFDEF DEBUG} {$WARNINGS ON} {$HINTS ON} {$ELSE} {$WARNINGS OFF} {$HINTS OFF} {$ENDIF}


我会尽量避免从任何做过这种事情的人那里获得未来的组件。 - Loren Pechtel

3

我会检查一下你是否在某些单元中关闭了警告。
根据单元的最后更改时间,编译顺序可能会改变。在某些情况下,警告可能仍然被禁用,当一个单元从版本控制中新下载时,它之前已经编译过了且没有警告。
特别注意你可能使用的任何Include文件。


我没有明确包含除uses语句之外的任何文件,并且我对$WARN和$WARNINGS指令的帮助文件的解释是它们不适用于当前单元之外的范围。无论如何,我的代码中没有这些指令之一。第三方库中使用的单元是否会导致问题? - Scott W
我们在使用第三方代码时遇到了问题,作用域没有按预期限制。 - Francesca

2
如果你使用dcc32.exe,所有警告都会被显示出来,这也是我为所有项目使用构建脚本的另一个原因。请注意,保留了HTML标签。

1
这并不完全正确,只有在给dcc32加上-B开关时才是这样,这相当于在IDE中进行完整的构建。如果没有该开关,dcc32默认也会执行增量构建。显然,只有编译的单元才会显示警告。 - mghie
1
你是对的,需要使用-B参数。对于一些项目,我会先将源代码复制到一个空目标目录结构中,只有在这种情况下才不需要-B参数。 - mjn

0

我仍在一些项目中使用D6,如果进行完整构建,则会显示/重新显示所有提示和警告。仅针对语法检查或编译更改的单元消息将被显示。

你可能有其他地方出了问题或损坏了。尝试删除项目的.dsm和.dof文件(它们将被重建),.dof文件包含警告和提示标志。


重新生成深度图失败,我的项目中找不到任何 .dsm 文件。 - Scott W

0
我已经成功清除了项目中的所有提示和警告,但是我发现“Build”选项卡没有显示任何信息。所以我声明了一个未使用的变量,这样就可以看到一些信息了。

这不是一个回答,应该是一条评论。 - Rahul Kadukar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接