Die documentation zum Addieren der Ergebnisse der Compiler prüft Gnatcheck ‚s Ausgabe sagt über Warnungen (mit einigen Bearbeitung)
Compiler-Warnungen Zur Aufzeichnung (Abschnitt Nachrichtensteuerung Warnung in GNAT-Benutzerhandbuch), Verwenden Sie die Warnungsregel mit einem gültigen Parameter static_string_ Ausdruck des GNAT-Pragma Warnungen (siehe "Pragma Warnungen" im GNAT-Referenzhandbuch). Beachten Sie, dass [die] bei gnatcheck s
Parameter, die auf die GNAT -gnatws
Option entspricht, um alle entsprechenden Warnungen deaktiviert, aber [ist] Unterdrückung nicht es den Warnmodus, und [der] e
Parameter, entsprechend -gnatwe
das bedeutet "Warnungen als Fehler behandeln", hat keine Auswirkungen.
Wenn du gehst „Pragma Warnungen“ zu sehen in der GNAT Reference Manual, finden Sie es Sie aus dem Compiler sendet:
Die Zeichenfolge ist eine Liste von Buchstaben anzugeben, die zu Warnungen Der Code für diese Buchstaben ist derselbe wie der String, der in dem Befehlszeilenschalter verwendet wird, der Warnungen steuert [-gnatw
] Für eine kurze Zusammenfassung verwenden Sie den gnatmake-Befehl ohne Argumente, der Nutzungsinformationen erzeugt, die die Liste enthalten von Warnschaltern unterstützt
Diesem Hinweis folgend, scheint es keine -gnatwx
zu geben, um Ihnen den Effekt von -Wuninitialized
zu geben. Wenn Sie jedoch auf alle Warnungen drehen
project Checks is
for Source_Files use ("checks.adb");
package Check is
for Default_Switches ("ada") use
(
"-rules",
"+RWarnings:.e"
);
end Check;
end Checks;
und führen Sie es auf
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;
erhalten Sie
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
wo die Warnungen auf den Leitungen 2, 3 (und 4) bedeuten die gleiche als "nicht initialisiert", denke ich.
Sie können dann die Warnungen deaktivieren, die Sie nicht möchten; Beispiel: "+RWarnings:.eF”
"deaktiviert Warnungen für nicht referenzierte formale" und unterdrückt die Warnung in Zeile 1.
Es gibt einen deutlichen Unterschied zwischen -gnatwe und -Wuninitialized: In einem langen Verfahren können Sie eine nicht initialisierte Variable und nach dem Affekt erstellen ein Wert, so dass die -gnatwe diese Warnung nicht erkennt. Aber dank dir verstehe ich das ganze Problem! – user1111
'-gnatwe' bedeutet" behandle alle Warnungen als Fehler "; -gnatw.e "bedeutet, dass" alle Warnungen, auch wirklich obskure, eingeschaltet werden "(ich paraphrase :). Für die meisten Zwecke ist "-gnatwa" in Ordnung. –