Ada SPARK:gnatprove带有-gnat13选项无法识别?

Ada SPARK:gnatprove带有-gnat13选项无法识别?,ada,spark-ada,Ada,Spark Ada,我对Ada/SPARK很陌生。我试着从这里学习一些教程-- 假设我正在运行这里给出的ISQRT示例()。所有代码(*.ads和*.adb)都绑定为一个名为isqrt.gpr的项目,我正在运行的命令是-- :~$gnatprove-gnat13-p isqrt.gpr 我得到的结果是-- 本教程说,我需要向校准仪提供一个名为-gnat13的开关,这样校准仪就可以跳过一些溢出检查,但显然这个开关是不可接受的 有什么想法吗?gnatprove命令提供的“帮助”非常有用: $ gnatprove --

我对Ada/SPARK很陌生。我试着从这里学习一些教程--

假设我正在运行这里给出的ISQRT示例()。所有代码(
*.ads
*.adb
)都绑定为一个名为
isqrt.gpr
的项目,我正在运行的命令是--

:~$gnatprove-gnat13-p isqrt.gpr

我得到的结果是--

本教程说,我需要向校准仪提供一个名为
-gnat13
的开关,这样校准仪就可以跳过一些溢出检查,但显然这个开关是不可接受的


有什么想法吗?

gnatprove命令提供的“帮助”非常有用:

$ gnatprove --help
Usage: gnatprove -Pproj [files] [switches] [-cargs switches]
proj is a GNAT project file
files is one or more file names
-cargs switches are passed to gcc
...
并且所提到的
gnatprove
开关都不是
-gnat13

因此,您需要将开关传递给
gnatprove
正在后台使用的编译器

有两种方法(至少):首先,使用
-cargs
路线

gnatprove -P t1q4.gpr -cargs -gnato13
或者第二,在GPR中设置它(我使用了
t1q4.GPR


(对象目录的
使用.build”
将中间文件隐藏在通常不可见的子目录中;
gprbuild
gnatmake
知道如何使用
-p
标记创建所需的目录,但是
gnatprove
不经告知就这样做了)

我怀疑您的问题在于AdaCore网站上的文档正在持续开发中,SPARK工具本身也在持续开发中,您正在使用SPARK GPL 2014快照。文档可能正在发生变化,这就是为什么StackOverflow策略在问题中显式地包含有问题的源代码。没有什么值得一提的您还应该显示实际的错误消息。在本例中,问题不在于您的代码,而在于您调用
gnatprove
的方式。尽管如此,如果您在此处发布代码、编译器命令和确切的错误消息,通常会帮助我们。@SimonWright it's Updateed.谢谢,但是我从哪里可以得到这些微妙之处的指南呢?主要的Spark教程讲的是在一个名为GPS的IDE中做所有事情,我不想运行它。我也找不到指南。GPS对这个问题没有帮助-但它确实提供了一个很好的突出显示问题的源代码行!
gnatprove -P t1q4.gpr -cargs -gnato13
project T1Q4 is
   for Source_Files use ("t1q4.ads", "t1q4.adb");
   for Object_Dir use ".build";
   package Compiler is
      for Default_Switches ("ada") use ("-gnato13");
   end Compiler;
end T1Q4;