Hinzufügen einer Anmerkung zum Funktionsverhalten
Zusätzlich zum Hinzufügen von Funktionsparameter und Rückgabewerte, können Sie Eigenschaften der Ganzfunktion kommentieren.
Funktions-Anmerkungen
Die folgenden Anmerkungen gelten für die Funktion als Ganzes zu und beschreiben, wie sie verhält, oder deren erwartet, dass erfüllt sein.
Anmerkung |
Beschreibung |
---|---|
_Called_from_function_class_(name) |
Die nicht zu eigenständig; sondern ein mit der _When_ Anmerkung verwendet werden, Prädikat.Weitere Informationen finden Sie unter Angeben, wann und wo eine Anmerkung gültig ist. Der name-Parameter ist eine beliebige Zeichenfolge, die auch in einer _Function_class_ Anmerkung in der Deklaration mehrerer Funktionen angezeigt wird. _Called_from_function_class_ gibt Wert ungleich 0 zurück, wenn die Funktion, die derzeit analysiert wird, kommentiert wird, indem _Function_class_ verwendet, der den gleichen Wert von name hat; andernfalls gibt er null zurück. |
_Check_return_ |
Kommentiert einen Rückgabewert und Zustände, dass der Aufrufer ihn überprüfen soll.Der Prüfer meldet einen Fehler, wenn die Funktion einen ungültigen Kontext aufgerufen wird. |
_Function_class_(name) |
Der name-Parameter ist eine beliebige Zeichenfolge, die vom Benutzer festgelegt wird.Sie wird in einem Namespace, der von anderen Namespaces unterscheidet.Eine Funktion, ein Funktionszeiger oder-höchst ein usefully-a Funktionszeigertyp werden als gehört mindestens Funktionsklassen festgelegt werden. |
_Raises_SEH_exception_ |
Kommentiert eine Funktion, die immer eine Ausnahme des strukturierten Ausnahmehandlers (SEH) abhängig _When_ und abhängig von _On_failure_ Zuständen auslöst.Weitere Informationen finden Sie unter Angeben, wann und wo eine Anmerkung gültig ist. |
_Maybe_raises_SEH_exception_ |
Kommentiert eine Funktion, die möglicherweise optional SEH Ausnahme davon abhängig _When_ und von _On_failure_ Zuständen soll. |
_Must_inspect_result_ |
Kommentiert jeden Ausgabewert, einschließlich den Rückgabewert, Parameter und die globalen Werte.Der Analyzer meldet einen Fehler, wenn der Wert im Objekt mit Anmerkungen später nicht überprüft wird. "Überprüfung" umfasst, ob sie in einem bedingten Ausdruck verwendet wird, ein Ausgabeparameter oder global zugewiesen wird, oder wird als Parameter übergeben.Für Rückgabewerte bedeutet _Must_inspect_result__Check_return_. |
_Use_decl_annotations_ |
Kann in einer Funktionsdefinition (auch als Funktionsrumpf) anstelle der Liste von Anmerkungen im Header verwendet werden. Wenn _Use_decl_annotations_ verwendet wird, werden die Anmerkungen, die auf einem im Gültigkeitsbereich befindlichen Header für dieselbe Funktion angezeigt werden, verwendet, als ob sie auch in der Definition vorhanden sind, die die _Use_decl_annotations_ Anmerkung verfügt. |
Erfolgs-/Fehler-Anmerkungen
Eine Funktion kann fehlschlagen und wenn dies der Fall ist, unterscheiden sich die Ergebnisse unvollständig sein oder von den Ergebnissen, wenn die Funktion folgt.Die Anmerkungen in der folgenden Liste stellen Methoden, das Fehlerverhalten auszudrücken.Um diese Anmerkungen zu verwenden, müssen Sie sie aktivieren, um Erfolg zu bestimmen Daher ist eine _Success_ Anmerkung erforderlich.Beachten Sie, dass NTSTATUS und HRESULT bereits eine _Success_ Anmerkung haben, in die sie erstellt wird; Wenn Sie jedoch eine eigene _Success_ Anmerkung auf NTSTATUS oder HRESULT angeben, überschreibt dieser die integrierte Anmerkung.
Anmerkung |
Beschreibung |
---|---|
_Always_(anno_list) |
Entspricht anno_list _On_failure_(anno_list); das heißt, gelten die Anmerkungen in anno_list zu, dass die Funktion folgt. |
_On_failure_(anno_list) |
Um nur wenn _Success_ auch verwendet wird, Funktion-jedes explizit zu kommentieren oder implizit durch _Return_type_success_ auf Typedef verwendet werden.Wenn die _On_failure_ Anmerkung auf einem Funktionsparameter oder einem Rückgabewert vorhanden ist, verhält sich jede Anmerkungen in anno_list (anno), als ob sie als _When_(!expr, anno) codiert wurde, in dem expr der Parameter an die erforderlichen _Success_ Anmerkung ist.Dies bedeutet, dass die implizite Anwendung von _Success_ auf alle Nachbedingungen nicht _On_failure_ gilt. |
_Return_type_success_(expr) |
Kann auf Typedef angewendet werden.Gibt an, dass alle Funktionen, die diesen Typ zurückgeben und nicht explizit _Success_ haben, gekennzeichnet sind, als ob sie _Success_(expr) hätten._Return_type_success_ kann nicht in einer Funktion oder einem Funktionszeiger Typedef verwendet werden. |
_Success_(expr) |
expr ist ein Ausdruck, der einen R-Wert ergibt.Wenn die _Success_ Anmerkung auf einer Funktionsdeklaration oder einer Definition vorhanden ist, verhält sich jede Anmerkung (anno) in der Funktion und in der Nachbedingung, als ob sie als _When_(expr, anno) codiert wurde.Die _Success_ Anmerkung wird nur auf eine Funktion, nicht auf deren Parametern oder Rückgabetyp verwendet werden.Es kann eine _Success_ Anmerkung für eine Funktion höchstens geben, und sie kann nicht in einem _When_, in _At_ oder in _Group_ sein.Weitere Informationen finden Sie unter Angeben, wann und wo eine Anmerkung gültig ist. |
Siehe auch
Referenz
Hinzufügen einer Anmerkung zu Funktionsparametern und Rückgabewerten
Hinzufügen einer Anmerkung zu Strukturen und Klassen
Hinzufügen einer Anmerkung zum Sperrverhalten
Angeben, wann und wo eine Anmerkung gültig ist
Empfohlene Vorgehensweisen und Beispiele (SAL)
Konzepte
Weitere Ressourcen
Verwenden von SAL-Anmerkungen zum Reduzieren von C/C++-Codefehlern