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