【问题标题】:List unused files in Gnat列出 Gnat 中未使用的文件
【发布时间】:2016-12-07 07:42:35
【问题描述】:

我在 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

【问题讨论】:

  • 你在看§8.3 Improving Performance的大小吗?
  • 我要做的是获取永远不会被删除的文件或获取大量死代码并将其删除。您发布的链接是一种可能性,但我不知道如何让它与 gpr 项目一起使用。

标签: ada gnat


【解决方案1】:

gnatelim 的帮助比较有限,但我已经尝试了一下,诀窍似乎是通过gnatelim 传递您的主机的文件名:

gnatelim main.adb

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

gnatelim -P black_examples.gpr client.adb

【讨论】:

  • 看来,由于我的项目是一个库,不可能通过一个主单元。但是,我用一个小存根项目对其进行了测试,它确实有效。非常感谢! PD:很抱歉花了这么长时间才接受答案,我不在城里。
【解决方案2】:

如果你的项目没有主单元,答案很简单;什么都没有使用。

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

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

【讨论】:

  • 我的项目中确实有一个主机,这就是为什么我不明白它为什么不起作用的原因。另一方面,非常感谢您提供的另一种选择。我会试试看,让你知道:)
  • 项目文件中的主要单元是否正确列出? for Main use ("main_unit");
  • 是的,主机已列出。我可以编译 gpr 并且它执行得很好,这就是为什么我不明白为什么 gnatelim 不起作用。另一方面,我仍然无法尝试您的想法。
【解决方案3】:

作为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 的诊断消息似乎并不完全足够。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多