在Gnat中列出未使用的文件

时间:2016-12-01 11:47:21

标签: ada 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

3 个答案:

答案 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 (...

gnatelimgnatelim的诊断消息似乎并不完全合适。