我在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
答案 0 :(得分:2)
gnatelim
的帮助相当有限,但我已经尝试了一下,诀窍似乎是传递gnatelim
主单元的文件名:
gnatelim main.adb
如果您的项目比包含所有所需源文件的单个目录更复杂,则会传递gnatelim
项目文件和主单元的文件名:
gnatelim -P black_examples.gpr client.adb
答案 1 :(得分:1)
如果您的项目没有任何主要单位,答案很简单;没有使用。
您需要至少有一个主单元,以便有一个参考,从中可以查看哪些单元未被使用。
在实践中,使用gnatelim
的可能性要简单得多。将-gnatwe
(将警告视为错误)与-gnatwa
相结合(启用大多数警告),GNAT会告诉您哪些with
个单位并非真正需要。
答案 2 :(得分:1)
作为Jacob's回答的后续行动,似乎有必要传递给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
的诊断消息似乎并不完全合适。