Skip to main content

SA0095 : Affectations sous conditions

Détecte les affectations dans des conditions de IF, CASE, ou REPEAT construit

Justification : Une affectation (:=) et une comparaison (=) peuvent facilement être confondues. Par conséquent, une affectation dans une condition peut facilement être involontaire, et elle est donc signalée. Cela peut également dérouter le lecteur du code.

Importance : Élevée

Exemple 88. Exemple
PROGRAM PLC_PRG
VAR
    iCond1:INT := INT#1;
    iCond2:INT := INT#2;
    xCond:BOOL := FALSE;
    iVar : INT;
END_VAR
IF INT_TO_BOOL(iCond1 := iCond2) THEN    // SA0095
    iCond1 := INT#1;
    iCond2 := INT#2;
    ELSIF (iCond1 := 11) = 11 THEN    // SA0095
        iCond1 := INT#1;
        iCond2 := INT#2;
END_IF

IF xCond := TRUE THEN    // SA0095
    xCond := FALSE;
END_IF

IF (xCond := FALSE) OR (iCond1 := iCond2) = 12 THEN    // SA0095
    xCond := FALSE;
    iCond1 := INT#1;
    iCond2 := INT#2;
END_IF

IF (iVar := iVar + 1) = 120 THEN    // SA0095 (can be valid, but is not reparable very well
    iVar := 0;
END_IF

WHILE (xCond = TRUE) OR (iCond1 := iCond2) = 12 DO    // SA0095
    xCond := FALSE;
END_WHILE

//Error: assignment in repeat loop
REPEAT
    xCond := FALSE;
UNTIL (xCond = TRUE) OR (iCond1 := iCond2) = 12    //  SA0095
END_REPEAT    

Sortie dans le messages voir:

  • sa_icon_message.png SA0095 : Affectation en condition : '...'