列出 Gnat 中未使用的文件

List unused files in Gnat

我在 GNAT 中有一个项目,我想列出所有从未使用过的文件。我正在考虑使用 python 脚本来完成它,但是,是否可以使用 GNAT 轻松地做到这一点?

更新:

我找到了关于 gnatelim 的信息,但是尽管在帮助中它说有 -P 选项

usage: gnatelim [options] -main=main_unit_name {filename} [-cargs gcc_switches]

options:
 --version - Display version and exit
 --help    - Display usage and exit

 -Pproject     - Use project file project. Only one such switch can be used.

好像不行,要主机(有整个项目!):

>gnatelim -Prelease.gpr
gnatelim: No main unit specified
try "gnatelim.exe --help" for more information.

我正在使用 GNAT 2015

如果您的项目没有任何主要单元,答案很简单;什么都没用。

您需要至少有一个主要单位,以便参考查看哪些单位未被使用。

在实践中,比使用 gnatelim 更简单的可能性。将 -gnatwe(将警告视为错误)与 -gnatwa(打开大多数警告)相结合,GNAT 会告诉您哪些 withed 单元不是真正需要的。

gnatelim的帮助比较有限,不过我试了一下,技巧好像是gnatelim传递你主机的文件名:

gnatelim main.adb

如果您的项目比包含所有需要的源文件的单个目录更复杂,您可以传递 gnatelim 项目文件和主单元的文件名:

gnatelim -P black_examples.gpr client.adb

作为回答的后续,看来有必要转给gnatelim

  • 正好是一个主要单元,取自项目文件中命名的单元
  • 项目文件

例如,在项目文件中我有几个主要单位列为

for Main use ("pack-prog.ada", "driver.ada", ...);

(还有 for Executable ("pack-prog.ada") use ("prog"); 等)

像您一样指定零个单位,或者指定一个以上的主要单位,我得到

$ gnatelim -Pasnip pack-prog.ada driver.ada  
gnatelim: No main unit specified  
try "gnatelim --help" for more information.  

指定一个单位,我得到

$ gnatelim -Pasnip pack-prog.ada
---------------------------------------------------------
--  List of unused entities to be placed in gnat.adc.  --
---------------------------------------------------------
pragma Eliminate (...

gnatelim 或通过 gnatelim 的诊断消息似乎不完全正确。