Coding style 如何在gnatcheck报告中添加-Wuninitialized?

Coding style 如何在gnatcheck报告中添加-Wuninitialized?,coding-style,ada,gnat,Coding Style,Ada,Gnat,我想在我的gnatcheck报告中包含未初始化的变量,但此警告的格式与以下格式不兼容: +rWarning:xxxx(带xxxx不同的警告开关) 我试着像其他人一样编写这种编程规则:+RWuninitialized,但它不起作用 对于gnatcheck而言,开关-Wuninitialized不存在,用于将编译器检查结果添加到gnatcheck的输出中的开关表示警告(进行了一些编辑) 要记录编译器警告(请参阅《GNAT用户指南》中的“警告消息控制”部分),请将警告规则与参数一起使用,该参数是GNA

我想在我的gnatcheck报告中包含未初始化的变量,但此警告的格式与以下格式不兼容:

+rWarning:xxxx
(带xxxx不同的警告开关)

我试着像其他人一样编写这种编程规则:
+RWuninitialized
,但它不起作用

对于
gnatcheck

而言,开关
-Wuninitialized
不存在,用于将编译器检查结果添加到gnatcheck的输出中的开关表示警告(进行了一些编辑)

要记录编译器警告(请参阅《GNAT用户指南》中的“警告消息控制”部分),请将警告规则与参数一起使用,该参数是GNAT pragma warnings的有效静态字符串表达式参数(请参阅GNAT参考手册中的“pragma warnings”)。请注意,在gnatcheck
s
的情况下,对应于GNAT
-gnatws
选项的[the]参数禁用所有特定警告,但[不]抑制警告模式,而对应于表示“将警告视为错误”的
-gnatwe
参数的[code>e参数没有任何效果

如果在中查找“pragma Warnings”,您会发现它会将您发送到编译器:

字符串是一个字母列表,指定要激活和停用的警告。这些字母的代码与控制警告的命令行开关中使用的字符串相同[
-gnatw
]。有关简要摘要,请使用不带参数的gnatmake命令,该命令将生成包含受支持的警告列表的使用信息

按照此建议,似乎没有
-gnatwx
提供
-Wuninitialized
的效果。但是,如果您打开所有警告

project Checks is
   for Source_Files use ("checks.adb");
   package Check is
   for Default_Switches ("ada") use
     (
      "-rules",
      "+RWarnings:.e"
     );
   end Check;
end Checks;
然后运行它

procedure Checks (Input : Integer; Result : out Integer) is
   X : Integer;
   Y : Integer;
   Z : Integer;
begin
   if (Y > 0) = True then
      Result := X;
   end if;
end Checks;
你得到

checks.adb:1:19: warning: formal parameter "Input" is not referenced
checks.adb:2:04: warning: variable "X" is read but never assigned
checks.adb:3:04: warning: variable "Y" is read but never assigned
checks.adb:4:04: warning: variable "Z" is never read and never assigned
checks.adb:6:15: warning: comparison with True is redundant
我认为第2行、第3行(和第4行)上的警告与“未初始化”的意思相同


然后,您可以关闭不需要的警告;例如,
“+RWarnings:.eF”
将“关闭未引用形式的警告”,并取消第1行上的警告。

在-gnatwe和-Wuninitialized之间有一个明显的区别:在一个较长的过程中,您可以创建一个未初始化的变量,然后影响一个值,-gnatwe不会检测到此警告。但多亏了你,我才明白整个问题<代码>-gnatwe表示“将所有警告视为错误”
-gnatw.e
是“打开所有警告,即使是真正模糊的警告”(我的意思是:)。在大多数情况下,
-gnatwa
正常。