2016-06-30 13 views
3

私はを報告gnatcheck私に初期化されていない変数を持つようにしたいが、この警告のフォーマットは、フォーマットと互換性がありません:(xxxxは貴様の警告スイッチで)私はこれを書いてみる必要があり-nuninitializedをgnatcheckレポートに追加する方法は?

+RWarnings:xxxx他のようなプログラミングルール:+RWuninitializedが動作しません。

gnatcheckのスイッチ-Wuninitializedは存在しません。 Gnatcheckの出力にコンパイラチェックの結果を追加するための

答えて

3

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行目の警告を抑制する。

+0

-gnatweと-Wuninitializedには明確な違いがあります。長い手順では、 -gnatweはこの警告を検出しません。しかし、あなたに感謝します。 – user1111

+0

'-gnatwe'は「すべての警告をエラーとして扱います」; -gnatw。eは、「すべての警告をオンにする、実際にはあいまいにする」という意味です(言い換えれば:)。ほとんどの場合、 '-gnatwa'はOKです。 –

関連する問題