SA0052 : Opération de changement de vitesse inhabituelle
Détecte les opérations de décalage (décalage de bit) sur les variables signées. Dans le cas d'opérations de décalage sur des types de données de champ binaire (Byte
, DWORD
, LWORD
, WORD
), aucune erreur n'est signalée.
Justification : CODESYS permet les opérations de décalage sur les types de données signés. Cependant, ces opérations sont inhabituelles et peuvent prêter à confusion. La norme CEI 61131-3 ne prévoit pas ce type d'opérations. Il convient donc de les éviter afin d’augmenter la portabilité du code vers d’autres systèmes de développement.
Importance : Moyenne
PROGRAM PLC_PRG VAR iTemp : INT; dwTemp1 : DWORD; byTemp2 : BYTE; diTemp3 : DINT; siTemp4 : SINT; liTemp5 : LINT; END_VAR
//the following lines each will cause an SA0052: iTemp := SHL(iTemp, BYTE#2); diTemp3 := SHR(diTemp3, BYTE#4); siTemp4 := ROL(siTemp4, BYTE#2); liTemp5 := ROR(liTemp5, BYTE#2); //no error SA0052 because DWORD and BYTE are bitfield datatypes: dwTemp1 := SHL(dwTemp1, BYTE#3); byTemp2 := SHR(byTemp2, BYTE#1);
Sortie dans le messages voir:
SA0052 : Opération de changement de vitesse inhabituelle