SA0076: Fehlende Aufzählungskonstante

Funktion

Ermittelt, ob in CASE-Anweisungen jede Enumerationskonstante als Bedingung verwendet und in einem CASE-Zweig abgefragt wird.

Begründung

Defensive Programmierung erfordert die Bearbeitung aller möglichen Werte einer Enumeration. Wenn für einen bestimmten Enumerationswert keine Aktion nötig ist, dann sollten Sie dies explizit durch einen Kommentar kennzeichnen. Damit wird deutlich, dass der Wert nicht einfach vergessen wurde.

Wichtigkeit

Niedrig

Beispiel:

Im folgenden Beispiel wird der Enumerationswert eYellow nicht als CASE-Zweig behandelt.

Enumeration E_Color:

TYPE E_Color :
(
    eRed,
    eGreen,
    eBlue,
    eYellow
);
END_TYPE

Programm MAIN:

PROGRAM MAIN
VAR
    eColor : E_Color;
    bVar   : BOOL;
END_VAR
eColor := E_Color.eYellow;
 
CASE eColor OF                   // => SA0076
    E_Color.eRed:
         bVar := FALSE;
 
    E_Color.eGreen,
    E_Color.eBlue:
         bVar := TRUE;
 
ELSE
    bVar := NOT bVar;
END_CASE