documentationは、
は(GNAT・ユーザーズ・ガイドのメッセージ制御の警告のセクションを参照)コンパイラの警告を記録するには(いくつかの編集で)警告について語りますGNATプラグマの警告の有効な static_string_表現引数(GNATリファレンスマニュアルの「プラグマの警告」を参照)であるパラメータとともに警告ルールを使用します。 GNAT -gnatws
オプションに対応 gnatcheck s
パラメータの場合には[ザ] は、すべての特定の警告を無効にすることを注意し、それに対応する、 ES警告モード、および[ザ] e
パラメーターを抑制し[ありません] -gnatwe
は、「警告をエラーとして処理する」という意味で、何の効果もありません。
あなたはGNAT Reference Manualで「プラグマ警告」をルックアップするために行く場合、あなたはそれがコンパイラにを離れて送信見つける:文字列は警告がにある指定の文字のリストがある
これらの文字のコードは、警告を制御するコマンドラインスイッチ[-gnatw
]で使用される文字列と同じです。簡単な要約として、引数を指定しないでgnatmakeコマンドを使用すると、リストを含む使用情報が生成されます警告スイッチのサポート。
このアドバイスに続いて、-Wuninitialized
の効果を得るためには-gnatwx
がないようです。あなたはすべての警告
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はこの警告を検出しません。しかし、あなたに感謝します。 – user1111
'-gnatwe'は「すべての警告をエラーとして扱います」; -gnatw。eは、「すべての警告をオンにする、実際にはあいまいにする」という意味です(言い換えれば:)。ほとんどの場合、 '-gnatwa'はOKです。 –